http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60721
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu.org --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- (gdb) p debug_bb (bb) <bb 2>: result_5 = getenv ("SMAC_STACK_SIZE"); if (result_5 != 0B) goto <bb 3>; else goto <bb 5>; (gdb) p debug_generic_expr (cfun->decl) init_smac in one unit getenv is pulled in via a header leading to extern char *getenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); (note the leaf attribute), and in the other we have int main ( argc, argv ) int argc; char **argv; { ... extern char *getenv (); this means that if cfun->calls_setjmp as in this case, this can make a difference. This is verifying after IPA transforms took place. It seems that 'leaf' is a decl attribute and thus is not preserved via gimple_call_fntype streaming (and also cannot be set for indirect calls). Sth for stmt fixup similar as we handle noreturn?