aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/function.cc')
-rw-r--r--gcc/function.cc10
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
{