https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83346
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2017-12-11 CC| |hubicka at gcc dot gnu.org, | |rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- (gdb) p node->debug () _ZN12_GLOBAL__N_11bIiNS_12_GLOBAL__N_12acIcccEEED2Ev/1 ({anonymous}::b<int, {anonymous}::{anonymous}::ac<char> >::~b()) @0x7ffff6db8170 Type: function definition analyzed Visibility: prevailing_def_ironly artificial References: Referring: Function {anonymous}::b<int, {anonymous}::{anonymous}::ac<char> >::~b()/1 is inline copy in {anonymous}::ae::~ae()/6 Availability: local First run: 0 Function flags: count: 574129753 (estimated locally) body local Called by: {anonymous}::ae::~ae()/6 (inlined) (574129753 (estimated locally),0.53 per call) Calls: {anonymous}::{anonymous}::ac<e, <template-parameter-1-2>, <template-parameter-1-3> >::~ac() [with <template-parameter-1-1> = char; <template-parameter-1-2> = char; <template-parameter-1-3> = char]/15 (574129752 (estimated locally),0.53 per call) so it's an inline clone. BUT ... at the start of the loop it is _ZN12_GLOBAL__N_11bIiNS_12_GLOBAL__N_12acIcccEEED1Ev/2 ({anonymous}::b<int, {anonymous}::{anonymous}::ac<char> >::~b()) @0x7ffff6db82e0 Type: function definition analyzed alias cpp_implicit_alias Visibility: prevailing_def_ironly artificial References: _ZN12_GLOBAL__N_11bIiNS_12_GLOBAL__N_12acIcccEEED2Ev/1 (alias) Referring: Availability: local First run: 0 Function flags: local Called by: {anonymous}::ae::~ae()/6 (574129753 (estimated locally),0.53 per call) Calls: so I'm not sure if 'order' stays valid during flatten processing or if we're just lucky in re-using GC memory with the inline clone. Honza?