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;

Reply via email to