------- Comment #14 from jakub at gcc dot gnu dot org 2009-02-06 16:37 ------- The problem is with f4 RESULT_DECL. First during save_inline_function_body remap_decl creates a copy of that RESULT_DECL and sets copy's DECL_ABSTRACT_ORIGIN to the original f4's RESULT_DECL. Then during optimization of the original f4 tree_nrv sets the original f4 RESULT_DECL's DECL_ABSTRACT_ORIGIN to found's DECL_ABSTRACT_ORIGIN (where found is a VAR_DECL originally from f1). But at this point decl_ultimate_origin will already ICE on the inlined f4's RESULT_DECL, as its DECL_ABSTRACT_ORIGIN has another DECL_ABSTRACT_ORIGIN, so it is not ultimate anymore.
I have no idea how to prevent this though. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39086