diff options
Diffstat (limited to 'gcc/function.cc')
-rw-r--r-- | gcc/function.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/function.cc b/gcc/function.cc index d975b00..cfc4d2f 100644 --- a/gcc/function.cc +++ b/gcc/function.cc @@ -5062,9 +5062,12 @@ stack_protect_epilogue (void) PARMS_HAVE_CLEANUPS is nonzero if there are cleanups associated with the function's parameters, which must be run at any return statement. */ +bool currently_expanding_function_start; void expand_function_start (tree subr) { + currently_expanding_function_start = true; + /* Make sure volatile mem refs aren't considered valid operands of arithmetic insns. */ init_recog_no_volatile (); @@ -5257,6 +5260,8 @@ expand_function_start (tree subr) /* If we are doing generic stack checking, the probe should go here. */ if (flag_stack_check == GENERIC_STACK_CHECK) stack_check_probe_note = emit_note (NOTE_INSN_DELETED); + + currently_expanding_function_start = false; } void @@ -6261,7 +6266,10 @@ thread_prologue_and_epilogue_insns (void) /* Threading the prologue and epilogue changes the artificial refs in the entry and exit blocks, and may invalidate DF info for tail calls. */ - if (optimize) + if (optimize + || flag_optimize_sibling_calls + || flag_ipa_icf_functions + || in_lto_p) df_update_entry_exit_and_calls (); else { |