http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46760
--- Comment #23 from Jan Hubicka <hubicka at ucw dot cz> 2011-01-10 00:21:35 UTC --- > 5386 > 5387 /* Allow the backend to decide if inlining is ok. */ > 5388 if (!targetm.target_option.can_inline_p (caller, callee)) > 5389 { > 5390 e->inline_failed = CIF_TARGET_OPTION_MISMATCH; > 5391 gimple_call_set_cannot_inline (e->call_stmt, true); > 5392 e->call_stmt_cannot_inline_p = true; > 5393 return false; > 5394 } > 5395 > (gdb) p e > $1 = (struct cgraph_edge *) 0x7fffdaf9fd68 > (gdb) p e->call_stmt > $2 = (union gimple_statement_d *) 0x0 > (gdb) Obviously we can not set gimple_call_set_cannot_inline when call_stmt is missing. I guess just guardining the set with if (e->call_stmt) gimple_call_set_cannot_inline (e->call_stmt, true); in all occurences in the function should fix the issue. Consider it preaproved if it helps. In 4.7 we probably should drop the gimple_call_set_cannot_inline calls completely, I don't see any value in them. Can you do dump_cgraph_node (stderr, e->caller) and dump_cgraph_node (stderr, e->callee)?? I think we should decide function to be uninlinable only in presence of target optimization attributes and I can not think of any during the bootstrap.... Honza