With -Og we are not prepared to do cleanup after IPA optimizations
and dead code exposed by those confuses late diagnostic passes.
This is a first patch removing unwanted IPA optimizations, namely
both late modref and pure-const analysis.

Bootstrap and regtest running on x86_64-unknown-linux-gnu, OK?

I will also attempt to address the IPA inlining bits but as
separate change.

Thanks,
Richard.

2022-01-18  Richard Biener  <rguent...@suse.de>

        PR ipa/103989
        * passes.def (pass_all_optimizations_g): Remove pass_modref
        and pass_local_pure_const.
---
 gcc/passes.def | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gcc/passes.def b/gcc/passes.def
index 78808424070..3e75de46c23 100644
--- a/gcc/passes.def
+++ b/gcc/passes.def
@@ -372,6 +372,9 @@ along with GCC; see the file COPYING3.  If not see
   POP_INSERT_PASSES ()
   NEXT_PASS (pass_all_optimizations_g);
   PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations_g)
+      /* The idea is that with -Og we do not perform any IPA optimization
+        so post-IPA work should be restricted to semantically required
+        passes and all optimization work is done early.  */
       NEXT_PASS (pass_remove_cgraph_callee_edges);
       NEXT_PASS (pass_strip_predict_hints, false /* early_p */);
       /* Lower remaining pieces of GIMPLE.  */
@@ -399,8 +402,6 @@ along with GCC; see the file COPYING3.  If not see
          number of false positives from it.  */
       NEXT_PASS (pass_split_crit_edges);
       NEXT_PASS (pass_late_warn_uninitialized);
-      NEXT_PASS (pass_local_pure_const);
-      NEXT_PASS (pass_modref);
       /* uncprop replaces constants by SSA names.  This makes analysis harder
         and thus it should be run last.  */
       NEXT_PASS (pass_uncprop);
-- 
2.31.1

Reply via email to