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

--- Comment #4 from hubicka at kam dot mff.cuni.cz ---
Hi,
I am testing the following to unbreak fortran.
However the real bug is that binds_to_current_def should work on whole
WPA and be independent of partitioning.  I remember I had patch fixing
that. Will look it up.

Honza

diff --git a/gcc/gimple.c b/gcc/gimple.c
index 76768c19c8e..7a578f5113e 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -1666,7 +1666,18 @@ gimple_call_static_chain_flags (const gcall *stmt)
          int modref_flags = summary->static_chain_flags;

          /* We have possibly optimized out load.  Be conservative here.  */
-         gcc_checking_assert (node->binds_to_current_def_p ());
+         if (!node->binds_to_current_def_p ())
+           {
+             if ((modref_flags & EAF_UNUSED) && !(flags & EAF_UNUSED))
+               {
+                 modref_flags &= ~EAF_UNUSED;
+                 modref_flags |= EAF_NOESCAPE;
+               }
+             if ((modref_flags & EAF_NOREAD) && !(flags & EAF_NOREAD))
+               modref_flags &= ~EAF_NOREAD;
+             if ((modref_flags & EAF_DIRECT) && !(flags & EAF_DIRECT))
+               modref_flags &= ~EAF_DIRECT;
+           }
          if (dbg_cnt (ipa_mod_ref_pta))
            flags |= modref_flags;
        }

Reply via email to