http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54896



--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> 2012-10-11 
14:08:16 UTC ---

(In reply to comment #3)

> Thanks for the test case!

> 

> Bug is confirmed with GCC 4.8 (trunk revision 192219).

> 

> Problem areas at -O1:

>  alias stmt walking    :  31.68 (36%) usr

>  tree DSE              :  10.83 (12%) usr

>  CSE                   :   9.02 (10%) usr

>  reload CSE regs       :  23.17 (26%) usr

>  TOTAL                 :  87.99

> 

> Problem areas at -O2 are pretty much the same:

>  alias stmt walking    :  47.29 (28%) usr

>  tree DSE              :  10.84 ( 7%) usr

>  CSE                   :   9.12 ( 5%) usr

>  CSE 2                 :  34.66 (21%) usr

>  reload CSE regs       :  45.37 (27%) usr

>  TOTAL                 : 166.12

> 

> 

> GCC 4.3.2 has the same problems at the RTL level:

>  tree DSE              :  11.60 (17%) usr

>  CSE                   :  19.74 (28%) usr

>  CSE 2                 :  12.63 (18%) usr

>  reload CSE regs       :   8.49 (12%) usr

>  TOTAL                 :  69.68

> 

> 

> tree-DSE, CSE and reload-CSE are both quadratic in the number of

> instructions per basic block, and all basic blocks in this test

> case contain O(10^3) instructions.



tree-DSE isn't quadratic but linear in the number of instructions

(again with a high factor, up to 256, without a --param).



> The alias stmt walking slowness is a regression, but I suspect

> there a dup that Rick Biener already knows about...



There are (for 4.8) limits in place everywhere to make alias-stmt

walking O(1) (well, with a high constant overhead ;)).



My numbers for 4.7 are, at -O2



 alias stmt walking      :  13.55 (19%) usr

 tree DSE                :   2.60 ( 4%) usr

 CSE                     :   8.79 (13%) usr

 CSE 2                   :  17.52 (25%) usr

 reload CSE regs         :  21.23 (30%) usr



with -m32 reload CSE regs is even worse.

Reply via email to