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 optimization/9805] optimisation of largish array constant containing strings takes forever(?) and consumes very large amounts of memory


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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



------- Additional Comments From pinskia at physics dot uc dot edu  2003-08-02 15:46 -------
-O3 is faster than -O1 or -O2.
Can someone tell me how can this be (I know now not expanding static functions that are not 
referenced)?
Looks like expand is causing this.
tin:~/src/gnu/gcctest>time g++ pr9805.cc -S -O -ftime-report

Execution times (seconds)
 cfg construction      :   1.16 ( 5%) usr   0.04 ( 4%) sys   1.20 ( 5%) wall
 cfg cleanup           :   1.45 ( 6%) usr   0.03 ( 3%) sys   1.48 ( 6%) wall
 trivially dead code   :   0.37 ( 2%) usr   0.00 ( 0%) sys   0.37 ( 1%) wall
 life analysis         :   2.70 (12%) usr   0.04 ( 4%) sys   2.74 (11%) wall
 life info update      :   1.80 ( 8%) usr   0.00 ( 0%) sys   1.80 ( 7%) wall
 alias analysis        :   0.59 ( 3%) usr   0.02 ( 2%) sys   0.61 ( 2%) wall
 register scan         :   0.19 ( 1%) usr   0.00 ( 0%) sys   0.19 ( 1%) wall
 rebuild jump labels   :   0.18 ( 1%) usr   0.00 ( 0%) sys   0.18 ( 1%) wall
 preprocessing         :   0.05 ( 0%) usr   0.01 ( 1%) sys   0.05 ( 0%) wall
 parser                :   0.33 ( 1%) usr   0.09 ( 8%) sys   0.43 ( 2%) wall
 name lookup           :   0.19 ( 1%) usr   0.10 ( 9%) sys   0.29 ( 1%) wall
 expand                :   3.50 (15%) usr   0.33 (30%) sys   3.84 (16%) wall
 varconst              :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall
 integration           :   2.64 (11%) usr   0.15 (14%) sys   2.79 (11%) wall
 jump                  :   0.39 ( 2%) usr   0.02 ( 2%) sys   0.41 ( 2%) wall
 CSE                   :   0.38 ( 2%) usr   0.00 ( 0%) sys   0.38 ( 2%) wall
 loop analysis         :   0.28 ( 1%) usr   0.04 ( 4%) sys   0.32 ( 1%) wall
 branch prediction     :   0.75 ( 3%) usr   0.04 ( 4%) sys   0.79 ( 3%) wall
 flow analysis         :   0.12 ( 1%) usr   0.00 ( 0%) sys   0.12 ( 0%) wall
 combiner              :   0.25 ( 1%) usr   0.00 ( 0%) sys   0.25 ( 1%) wall
 if-conversion         :   0.43 ( 2%) usr   0.01 ( 1%) sys   0.44 ( 2%) wall
 local alloc           :   0.28 ( 1%) usr   0.02 ( 2%) sys   0.30 ( 1%) wall
 global alloc          :   2.70 (12%) usr   0.12 (11%) sys   2.82 (11%) wall
 reload CSE regs       :   0.53 ( 2%) usr   0.00 ( 0%) sys   0.53 ( 2%) wall
 flow 2                :   0.33 ( 1%) usr   0.00 ( 0%) sys   0.33 ( 1%) wall
 if-conversion 2       :   0.22 ( 1%) usr   0.00 ( 0%) sys   0.22 ( 1%) wall
 rename registers      :   0.29 ( 1%) usr   0.00 ( 0%) sys   0.29 ( 1%) wall
 shorten branches      :   0.11 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall
 final                 :   0.22 ( 1%) usr   0.02 ( 2%) sys   0.42 ( 2%) wall
 rest of compilation   :   0.92 ( 4%) usr   0.02 ( 2%) sys   0.94 ( 4%) wall
 TOTAL                 :  23.39             1.10            24.77
23.390u 1.140s 0:24.81 98.8%    0+0k 0+0io 1118pf+0w
tin:~/src/gnu/gcctest>time g++ pr9805.cc -S -O3 -ftime-report

Execution times (seconds)
 callgraph construction:   0.04 ( 3%) usr   0.00 ( 0%) sys   0.04 ( 2%) wall
 cfg cleanup           :   0.04 ( 3%) usr   0.00 ( 0%) sys   0.04 ( 2%) wall
 trivially dead code   :   0.02 ( 1%) usr   0.00 ( 0%) sys   0.02 ( 1%) wall
 life analysis         :   0.08 ( 5%) usr   0.00 ( 0%) sys   0.08 ( 4%) wall
 life info update      :   0.03 ( 2%) usr   0.00 ( 0%) sys   0.03 ( 2%) wall
 alias analysis        :   0.01 ( 1%) usr   0.00 ( 0%) sys   0.01 ( 1%) wall
 register scan         :   0.03 ( 2%) usr   0.00 ( 0%) sys   0.03 ( 2%) wall
 preprocessing         :   0.05 ( 3%) usr   0.03 (10%) sys   0.08 ( 4%) wall
 parser                :   0.36 (23%) usr   0.13 (42%) sys   0.50 (26%) wall
 name lookup           :   0.14 ( 9%) usr   0.12 (39%) sys   0.26 (13%) wall
 expand                :   0.06 ( 4%) usr   0.01 ( 3%) sys   0.07 ( 4%) wall
 varconst              :   0.02 ( 1%) usr   0.01 ( 3%) sys   0.02 ( 1%) wall
 integration           :   0.05 ( 3%) usr   0.00 ( 0%) sys   0.05 ( 3%) wall
 jump                  :   0.01 ( 1%) usr   0.00 ( 0%) sys   0.01 ( 1%) wall
 CSE                   :   0.09 ( 6%) usr   0.00 ( 0%) sys   0.09 ( 5%) wall
 global CSE            :   0.07 ( 4%) usr   0.01 ( 3%) sys   0.08 ( 4%) wall
 loop analysis         :   0.03 ( 2%) usr   0.00 ( 0%) sys   0.03 ( 2%) wall
 bypass jumps          :   0.03 ( 2%) usr   0.00 ( 0%) sys   0.03 ( 2%) wall
 CSE 2                 :   0.03 ( 2%) usr   0.00 ( 0%) sys   0.03 ( 2%) wall
 if-conversion         :   0.01 ( 1%) usr   0.00 ( 0%) sys   0.01 ( 1%) wall
 regmove               :   0.01 ( 1%) usr   0.00 ( 0%) sys   0.01 ( 1%) wall
 local alloc           :   0.02 ( 1%) usr   0.00 ( 0%) sys   0.02 ( 1%) wall
 global alloc          :   0.09 ( 6%) usr   0.00 ( 0%) sys   0.09 ( 5%) wall
 reload CSE regs       :   0.05 ( 3%) usr   0.00 ( 0%) sys   0.05 ( 3%) wall
 flow 2                :   0.01 ( 1%) usr   0.00 ( 0%) sys   0.01 ( 1%) wall
 peephole 2            :   0.01 ( 1%) usr   0.00 ( 0%) sys   0.01 ( 1%) wall
 rename registers      :   0.06 ( 4%) usr   0.00 ( 0%) sys   0.06 ( 3%) wall
 scheduling 2          :   0.08 ( 5%) usr   0.00 ( 0%) sys   0.08 ( 4%) wall
 final                 :   0.02 ( 1%) usr   0.00 ( 0%) sys   0.02 ( 1%) wall
 rest of compilation   :   0.02 ( 1%) usr   0.00 ( 0%) sys   0.02 ( 1%) wall
 TOTAL                 :   1.58             0.31             1.95
1.580u 0.320s 0:01.97 96.4%     0+0k 0+0io 1193pf+0w

This testcase looks like when unit-at-a-time is enabled by default, it will be fixed.


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