[Bug middle-end/63155] [6/7/8/9 Regression] memory hog

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Sep 19 07:39:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63155

--- Comment #27 from Richard Biener <rguenth at gcc dot gnu.org> ---
TOT now for the alternate testcase at -O1+ exhibits

Time variable                                   usr           sys          wall
              GGC
...
 tree CCP                           :   9.21 ( 64%)   0.00 (  0%)   9.22 ( 63%)
    244 kB (  0%)
...
 TOTAL                              :  14.35          0.22         14.57       
 521240 kB

never seen CCP take that much time.

All time is spent in bitmap_set_bit called by add_ssa_edge from
ssa_propagation_engine::simulate_stmt.

It sets stmt UIDs in the ssa_edge_worklist.

Note on that testcase CCP really does a lot (disabling CCP makes things only
slower), which means the testcase is quite artificial.  There are
752492 stmts at the point the SSA propagator starts to run and as out-of-SSA
coalescing told us bits are spread in an unfortunate way here.

Sorting the uses we walk in add_ssa_edge after gimple_uid doesn't help much.
We're still processing bits like 4, 1509, 3014, 4519, 6024, 7529, 9034, ...

Assigning UIDs lazily in that very function improves things (as expected),
but we still have

 tree CCP                           :   3.82 ( 43%)   0.00 (  0%)   3.83 ( 42%)
    244 kB (  0%)

after that.  I'll dig a bit further later.


More information about the Gcc-bugs mailing list