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

--- Comment #26 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #24)
> Created attachment 50087 [details]
> updated time and memory report
> 
> This is updated -f{time,mem}-report (with
> --enable-gather-detailed-mem-stats) for ltrans34.o

And the obvious candidate is the RD DF problem where DF-chain depends on RD.
Explicit RD users are haifa (sched_init (), but adds also DF-chain),
WEB, REE, loop IV and invariant and DCE.

df-problems.c:228 (df_rd_alloc)                       1276M:  7.3%     1280M   
   33M:  1.6%          0           0       heap
df-problems.c:509 (df_rd_transfer_function)           6709M: 38.1%     6709M   
  329M: 15.6%          0           0       heap
df-problems.c:227 (df_rd_alloc)                       7992M: 45.4%     7992M   
  200M:  9.5%          0           0       heap

but it's odd since in particular IRA does not seem to use DF_CHAIN/DF_RD
and at the start of ira() we do have 7GB RSS (for quite some time already,
somewhere in loop opt).

So the first peak to 7GB is fwprop_init, after add_phi_nodes.  Memory
is released again after fwprop but since fwprop runs at -O1 it should
likely limit itself somehow.  Richard?

The next pass is (meh), STV, which uses df_chain.

Then we have another fwprop instance.

Then remove_partial_avx_dependency and STV again, then if-conversion
but that doesn't use chain or rd - so sth from before must leak,
most likely one of the i386 specific passes after combine.

Looks like remove_partial_avx_dependency is the culprit, leaving garbage
around and for whatever stupid reason adds a plethora of DF problems...

Reply via email to