This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/13776] [tree-ssa] Many C++ compile-time regression in 3.5-tree-ssa 040120


------- Additional Comments From dberlin at dberlin dot org  2004-03-14 15:38 -------
Subject: Bug 13776


On Mar 14, 2004, at 8:35 AM, Richard Guenther wrote:

> Daniel Berlin wrote:
>> This adds a DOM pass in between split critical edges and PRE, and 
>> works for me on i686 and powerpc
>> Tell me if it helps
>
> It made things worse in total, even PRE degraded some, but that may be 
> in the noise.
>
> Richard.

I don't even get close to these numbers.
I've got your leafify patch installed (the one linked from the bug 
report)
Even at -O2, on a checking enabled compiler, with tramp3d-v2 from the 
bug report, with the following sizes:

[root@dberlin dberlin]# ls -trl tramp3d-v2.ii
-rw-r--r--    1 root     root      2962361 Feb  5 10:27 tramp3d-v2.ii
generated from
[root@dberlin dberlin]# ls -l tramp3d-v2.cpp
-rw-r--r--    1 dberlin  dberlin   1952077 Feb  5 10:14 tramp3d-v2.cpp

I get (without any changes to PRE):
[root@dberlin gcc]# ./cc1plus -O2 ~dberlin/tramp3d-v2.ii
...
Execution times (seconds)
  garbage collection    :  46.23 (15%) usr   0.27 ( 3%) sys  46.66 (15%) 
wall
  callgraph construction:   0.68 ( 0%) usr   0.01 ( 0%) sys   0.72 ( 0%) 
wall
  callgraph optimization:   0.80 ( 0%) usr   0.07 ( 1%) sys   0.92 ( 0%) 
wall
  cfg construction      :   0.46 ( 0%) usr   0.04 ( 0%) sys   0.50 ( 0%) 
wall
  cfg cleanup           :   1.82 ( 1%) usr   0.02 ( 0%) sys   1.84 ( 1%) 
wall
  CFG verifier          :   8.07 ( 3%) usr   0.03 ( 0%) sys   8.15 ( 3%) 
wall
  trivially dead code   :   1.28 ( 0%) usr   0.00 ( 0%) sys   1.29 ( 0%) 
wall
  life analysis         :   2.96 ( 1%) usr   0.01 ( 0%) sys   2.97 ( 1%) 
wall
  life info update      :   1.52 ( 0%) usr   0.01 ( 0%) sys   1.56 ( 0%) 
wall
  alias analysis        :   2.64 ( 1%) usr   0.01 ( 0%) sys   2.66 ( 1%) 
wall
  register scan         :   1.23 ( 0%) usr   0.02 ( 0%) sys   1.25 ( 0%) 
wall
  rebuild jump labels   :   0.38 ( 0%) usr   0.00 ( 0%) sys   0.38 ( 0%) 
wall
  preprocessing         :   0.29 ( 0%) usr   0.17 ( 2%) sys   0.46 ( 0%) 
wall
  parser                :  13.65 ( 4%) usr   1.27 (16%) sys  20.56 ( 6%) 
wall
  name lookup           :   4.99 ( 2%) usr   2.00 (25%) sys   7.07 ( 2%) 
wall
  integration           :  28.17 ( 9%) usr   0.19 ( 2%) sys  28.57 ( 9%) 
wall
  tree gimplify         :   2.08 ( 1%) usr   0.05 ( 1%) sys   2.19 ( 1%) 
wall
  tree eh               :   2.86 ( 1%) usr   0.08 ( 1%) sys   2.96 ( 1%) 
wall
  tree CFG construction :   1.60 ( 1%) usr   0.09 ( 1%) sys   1.71 ( 1%) 
wall
  tree CFG cleanup      :   3.99 ( 1%) usr   0.04 ( 0%) sys   4.04 ( 1%) 
wall
  tree PTA              :   0.47 ( 0%) usr   0.01 ( 0%) sys   0.49 ( 0%) 
wall
  tree alias analysis   :   0.61 ( 0%) usr   0.00 ( 0%) sys   0.61 ( 0%) 
wall
  tree PHI insertion    :   9.15 ( 3%) usr   0.07 ( 1%) sys   9.26 ( 3%) 
wall
  tree SSA rewrite      :   3.30 ( 1%) usr   0.01 ( 0%) sys   3.32 ( 1%) 
wall
  tree SSA other        :   3.63 ( 1%) usr   0.51 ( 6%) sys   4.20 ( 1%) 
wall
  tree operand scan     :   3.62 ( 1%) usr   0.59 ( 7%) sys   4.22 ( 1%) 
wall
  dominator optimization:  15.57 ( 5%) usr   0.46 ( 6%) sys  16.09 ( 5%) 
wall
  tree SRA              :   0.31 ( 0%) usr   0.01 ( 0%) sys   0.32 ( 0%) 
wall
  tree CCP              :   1.56 ( 1%) usr   0.02 ( 0%) sys   1.58 ( 0%) 
wall
  tree split crit edges :   0.57 ( 0%) usr   0.03 ( 0%) sys   0.61 ( 0%) 
wall
  tree PRE              :  34.92 ( 9%) usr   0.14 ( 2%) sys  35.20 ( 9%) 
wall
  tree linearize phis   :   0.03 ( 0%) usr   0.02 ( 0%) sys   0.05 ( 0%) 
wall
  tree forward propagate:   1.12 ( 0%) usr   0.02 ( 0%) sys   1.14 ( 0%) 
wall
  tree conservative DCE :   3.02 ( 1%) usr   0.03 ( 0%) sys   3.06 ( 1%) 
wall
  tree aggressive DCE   :   0.78 ( 0%) usr   0.01 ( 0%) sys   0.79 ( 0%) 
wall
  tree DSE              :   2.18 ( 1%) usr   0.01 ( 0%) sys   2.20 ( 1%) 
wall
  tree copy headers     :   2.15 ( 1%) usr   0.02 ( 0%) sys   2.19 ( 1%) 
wall
  tree SSA to normal    :   2.42 ( 1%) usr   0.13 ( 2%) sys   2.61 ( 1%) 
wall
  tree NRV optimization :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) 
wall
  tree rename SSA copies:   0.71 ( 0%) usr   0.04 ( 0%) sys   0.75 ( 0%) 
wall
  tree SSA verifier     :  25.23 ( 8%) usr   0.23 ( 3%) sys  25.52 ( 8%) 
wall
  tree STMT verifier    :   3.72 ( 1%) usr   0.03 ( 0%) sys   3.76 ( 1%) 
wall
  callgraph verifier    :   7.79 ( 3%) usr   0.25 ( 3%) sys   8.09 ( 3%) 
wall
  dominance frontiers   :   0.27 ( 0%) usr   0.00 ( 0%) sys   0.27 ( 0%) 
wall
  control dependences   :   0.14 ( 0%) usr   0.00 ( 0%) sys   0.14 ( 0%) 
wall
  expand                :  16.03 ( 5%) usr   0.19 ( 2%) sys  16.41 ( 5%) 
wall
  varconst              :   0.66 ( 0%) usr   0.05 ( 1%) sys   1.06 ( 0%) 
wall
  jump                  :   1.17 ( 0%) usr   0.15 ( 2%) sys   1.41 ( 0%) 
wall
  CSE                   :   8.76 ( 3%) usr   0.05 ( 1%) sys   8.84 ( 3%) 
wall
  global CSE            :   5.01 ( 2%) usr   0.13 ( 2%) sys   5.15 ( 2%) 
wall
  loop analysis         :   1.21 ( 0%) usr   0.01 ( 0%) sys   1.24 ( 0%) 
wall
  bypass jumps          :   0.94 ( 0%) usr   0.00 ( 0%) sys   0.94 ( 0%) 
wall
  CSE 2                 :   3.59 ( 1%) usr   0.02 ( 0%) sys   3.78 ( 1%) 
wall
  branch prediction     :   2.25 ( 1%) usr   0.01 ( 0%) sys   2.31 ( 1%) 
wall
  flow analysis         :   0.08 ( 0%) usr   0.00 ( 0%) sys   0.10 ( 0%) 
wall
  combiner              :   2.58 ( 1%) usr   0.03 ( 0%) sys   2.64 ( 1%) 
wall
  if-conversion         :   0.57 ( 0%) usr   0.00 ( 0%) sys   0.57 ( 0%) 
wall
  regmove               :   0.85 ( 0%) usr   0.00 ( 0%) sys   0.86 ( 0%) 
wall
  local alloc           :   1.80 ( 1%) usr   0.01 ( 0%) sys   1.84 ( 1%) 
wall
  global alloc          :   5.34 ( 2%) usr   0.10 ( 1%) sys   5.50 ( 2%) 
wall
  reload CSE regs       :   2.24 ( 1%) usr   0.00 ( 0%) sys   2.25 ( 1%) 
wall
  flow 2                :   0.33 ( 0%) usr   0.00 ( 0%) sys   0.34 ( 0%) 
wall
  if-conversion 2       :   0.35 ( 0%) usr   0.00 ( 0%) sys   0.35 ( 0%) 
wall
  peephole 2            :   0.38 ( 0%) usr   0.00 ( 0%) sys   0.39 ( 0%) 
wall
  rename registers      :   1.43 ( 0%) usr   0.04 ( 0%) sys   1.52 ( 0%) 
wall
  scheduling 2          :   2.28 ( 1%) usr   0.08 ( 1%) sys   2.38 ( 1%) 
wall
  reorder blocks        :   0.49 ( 0%) usr   0.01 ( 0%) sys   0.50 ( 0%) 
wall
  shorten branches      :   0.70 ( 0%) usr   0.01 ( 0%) sys   0.71 ( 0%) 
wall
  reg stack             :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.05 ( 0%) 
wall
  final                 :   1.03 ( 0%) usr   0.14 ( 2%) sys   1.38 ( 0%) 
wall
  symout                :   0.02 ( 0%) usr   0.03 ( 0%) sys   0.06 ( 0%) 
wall
  rest of compilation   :   1.48 ( 0%) usr   0.04 ( 0%) sys   1.54 ( 0%) 
wall
  TOTAL                 : 310.60             8.12           327.62
Extra diagnostic checks enabled; compiler may run slowly.
Configure with --disable-checking to disable checks.


With my changes to PRE, i get the same numbers, except PRE is at 28 
seconds instead of 36.

I certainly get *nowhere close* to 600 seconds in PRE, or the numbers 
you get overall.
I can't fix a problem i can't reproduce, i can only take stabs at it.
Can someone else please verify his numbers so i know whether it's my 
test setup or his?



-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]