http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46367
--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-15 15:28:44 UTC --- The loop #88 0x0000000000f9218f in cgraph_clone_inlined_nodes (e=0x7ffff315c750, duplicate=1 '\001', update_original=0 '\000') at /space/rguenther/src/svn/trunk/gcc/ipa-inline.c:306 306 cgraph_clone_inlined_nodes (e, duplicate, update_original); (gdb) l 301 cgraph_propagate_frequency (e->callee); 302 303 /* Recursively clone all bodies. */ 304 for (e = e->callee->callees; e; e = e->next_callee) 305 if (!e->inline_failed) 306 cgraph_clone_inlined_nodes (e, duplicate, update_original); doesn't terminate but endlessly recurses. I can't see how it should work in a cgraph cycle: Considering inline candidate S::~S(). Considering S::~S() with 10 size to be inlined into S::~S() in t.ii:7 Estimated growth after inlined into all callees is +4 insns. Estimated badness is 13, frequency 0.78. Badness calculcation for S::~S() -> S::~S() growth 4, time 22-14, size 10-6 12: guessed profile. frequency 783, overall growth 4, benefit 61%, divisor 4819 Performing recursive inlining on S::~S() Inlining call of depth 1 Processing frequency S::~S() Called by S::~S() that is normal or hot Inlining call of depth 2 Processing frequency S::~S() Called by S::~S() that is normal or hot Processing frequency S::~S() Called by S::~S() that is normal or hot Processing frequency S::~S() Called by S::~S() that is normal or hot Processing frequency S::~S() Called by S::~S() that is normal or hot Processing frequency S::~S() Called by S::~S() that is normal or hot Processing frequency S::~S() Called by S::~S() that is normal or hot Processing frequency S::~S() Node S::~S() promoted to unlikely executed. Processing frequency S::~S() Processing frequency S::~S() Processing frequency S::~S() Processing frequency S::~S() Processing frequency S::~S() Processing frequency S::~S() Processing frequency S::~S() ... Honza, please have a look.