http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48508
--- Comment #12 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-12-14 14:33:27 UTC --- Even more reduced, fails with > ./g++ -B. -g -O -r -nostdlib 1.ii 2.ii -flto -finline-small-functions lto1: internal compiler error: in output_die, at dwarf2out.c:8401 1.ii ---- class Value; bool js_ValueToAtom(const Value &v); void js_InternNonIntElementIdSlow(const Value &idval) { js_ValueToAtom(idval); } 2.ii ---- class Value; void js_InternNonIntElementId(const Value &idval) { extern void js_InternNonIntElementIdSlow(const Value &); js_InternNonIntElementIdSlow(idval); } void Interpret(const Value &idval_) { js_InternNonIntElementId(idval_); } Appearantly it is required that js_InternNonIntElementId is inlined eary while js_InternNonIntElementIdSlow is inlined two times at IPA time, both into js_InternNonIntElementId and Interpret.