[Bug rtl-optimization/80930] REE pass causes high memory usage via df_mir_alloc() with ASAN+UBSAN turned on
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80930 Richard Biener changed: What|Removed |Added Resolution|--- |DUPLICATE Status|NEW |RESOLVED --- Comment #3 from Richard Biener --- duping, fixed on trunk sofar. *** This bug has been marked as a duplicate of bug 98144 ***
[Bug rtl-optimization/80930] REE pass causes high memory usage via df_mir_alloc() with ASAN+UBSAN turned on
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80930 --- Comment #2 from Franz Sirl --- Further investigation shows that "-O2 -fsanitize=undefined" is enough to trigger the excessive memory usage. The big difference between GCC-6 and GCC-7 is that the function causing this has ~20 blocks in GCC-6 and ~30 blocks in GCC-7. I'll try to investigate the reason for this 50% increase a bit.
[Bug rtl-optimization/80930] REE pass causes high memory usage via df_mir_alloc() with ASAN+UBSAN turned on
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80930 Richard Biener changed: What|Removed |Added Keywords||memory-hog Status|UNCONFIRMED |NEW Last reconfirmed||2017-06-01 Component|middle-end |rtl-optimization Ever confirmed|0 |1 --- Comment #1 from Richard Biener --- #3 0x00c8d454 in df_analyze_problem (n_blocks=299166, postorder=0x17168b2e0, blocks_to_consider=, dflow=0x16b830fb0) at ../../gcc/df-core.c:1165 ^^^ so it looks like the MIR probem is quadratic somehow (well, I can easily see that it is, if sth is must-initialized in BB N then it is must-initialized in all post-dominators). REE should cap itself on some reasonably large n_blocks * number_of_pseudos, at least at -O1 (which we recommend to insanely large code bases). Or it should work on sub-CFGs or simply only disable the cases that absoultely need MIR info if the problem gets too large. Confirmed by virtue of looking even w/o a testcase.