ipa/103989 - tame IPA optimizations at -Og
Commit Message
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 <rguenther@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(-)
Comments
> 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 <rguenther@suse.de>
>
> PR ipa/103989
> * passes.def (pass_all_optimizations_g): Remove pass_modref
> and pass_local_pure_const.
OK,
thanks (I was just testing same change :)
Honza
> ---
> 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
@@ -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);