[Bug target/103200] [12 Regression] FAIL: gcc.target/i386/pr91333.c scan-assembler-times vmovapd|vmovsd 3 since r12-5177-g494bdadf28d0fb35

hubicka at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Nov 12 10:35:47 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103200

--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Sorry, I managed to include last minute change that was wrong.  Currently
modref does not track if function is deterministic so we can not detect looping
pure/consts. I am testing.

diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c
index 72006251f29..4da5284c94f 100644
--- a/gcc/ipa-modref.c
+++ b/gcc/ipa-modref.c
@@ -2790,9 +2790,10 @@ analyze_function (function *f, bool ipa)

   if (!ipa && flag_ipa_pure_const)
     {
-      if (!summary->stores->every_base && !summary->stores->bases)
+      if (!summary->stores->every_base && !summary->stores->bases
+         && !summary->side_effects)
        {
-         if (!summary->loads->every_base && !summary->loads->bases)
+         if (!summary->loads->every_base && !summary->loads->bases
            fixup_cfg = ipa_make_function_const
                   (cgraph_node::get (current_function_decl),
                    summary->side_effects, true);
@@ -4380,7 +4381,8 @@ modref_propagate_in_scc (cgraph_node *component_node)
        modref_summary_lto *summary_lto = summaries_lto
                                          ? summaries_lto->get (cur)
                                          : NULL;
-       if (summary && !summary->stores->every_base && !summary->stores->bases)
+       if (summary && !summary->stores->every_base && !summary->stores->bases
+           && !summary->side_effects)
          {
            if (!summary->loads->every_base && !summary->loads->bases)
              pureconst |= ipa_make_function_const
@@ -4390,7 +4392,7 @@ modref_propagate_in_scc (cgraph_node *component_node)
                     (cur, summary->side_effects, false);
          }
        if (summary_lto && !summary_lto->stores->every_base
-           && !summary_lto->stores->bases)
+           && !summary_lto->stores->bases && !summary->side_effects)
          {
            if (!summary_lto->loads->every_base && !summary_lto->loads->bases)
              pureconst |= ipa_make_function_const


More information about the Gcc-bugs mailing list