https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101720
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- OK, so there's nothing obvious apart from that we accumulate lots of debug stmts/insns which, compared to regular stmts, are not "optimized", so they simply pile up when doing any IL copying like inlining. > wc -l bug.cc.247t.optimized.g0 1196882 bug.cc.247t.optimized.g0 > wc -l bug.cc.247t.optimized.g2 2759569 bug.cc.247t.optimized.g2 classifying > grep '# DEBUG.* => NULL' bug.cc.247t.optimized.g2 | wc -l 481489 > grep '# DEBUG INLINE_ENTRY' bug.cc.247t.optimized.g2 | wc -l 288926 > grep '# DEBUG BEGIN_STMT' bug.cc.247t.optimized.g2 | wc -l 33918 leaves 758354 regular non-reset debug-binds. Unfortunately a lot of cases end up like voidD.48 testing::internal::TestFactoryImpl<absl::lts_20210324::container_internal::{anonymous}::Btree_set_int32_Test>::~TestFactoryImpl (struct TestFactoryImplD.306399 * const thisD.306407) { <bb 2> [local count: 1073741824]: # DEBUG thisD.1973254 => this_2(D) # DEBUG INLINE_ENTRY __dt D.306403 # DEBUG D#1416 => &this_2(D)->D.306415 # DEBUG thisD.1973255 => D#1416 # DEBUG INLINE_ENTRY __dt D.218201 # DEBUG thisD.1973255 => NULL # DEBUG thisD.1973254 => NULL operator delete (this_2(D), 8); [tail call] return;