Hi,
unlike other IPA passes, the ICF pass can be run at -O0 and some testcases
rely on this in the testsuite. Now it effectively creates a tail call so the
DF information needs be updated in this case after epilogue creation.
Tested on x86-64/Linux, OK for mainline?
2023-01-13 Eric Botcazou <ebotca...@adacore.com>
PR rtl-optimization/108274
* function.cc (thread_prologue_and_epilogue_insns): Also update the
DF information for calls in a few more cases.
--
Eric Botcazou
diff --git a/gcc/function.cc b/gcc/function.cc
index d975b001ec9..95f47d287c5 100644
--- a/gcc/function.cc
+++ b/gcc/function.cc
@@ -6261,7 +6261,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
{