[Bug target/54781] [4.8 Regression] ICE in refs_may_alias_p_1, at tree-ssa-alias.c:1124

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Dec 17 12:39:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54781

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |ASSIGNED
         AssignedTo|unassigned at gcc dot       |rguenth at gcc dot gnu.org
                   |gnu.org                     |

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-17 12:39:10 UTC ---
Ah, I'm testing the following, which seems to fix the testcase with a cross.

Index: alias.c
===================================================================
--- alias.c     (revision 194552)
+++ alias.c     (working copy)
@@ -283,20 +283,14 @@ ao_ref_from_mem (ao_ref *ref, const_rtx
   if (base == NULL_TREE)
     return false;

-  /* The tree oracle doesn't like to have these.  */
-  if (TREE_CODE (base) == FUNCTION_DECL
-      || TREE_CODE (base) == LABEL_DECL)
-    return false;
-
-  /* If this is a pointer dereference of a non-SSA_NAME punt.
-     ???  We could replace it with a pointer to anything.  */
-  if ((INDIRECT_REF_P (base)
-       || TREE_CODE (base) == MEM_REF)
-      && TREE_CODE (TREE_OPERAND (base, 0)) != SSA_NAME)
-    return false;
-  if (TREE_CODE (base) == TARGET_MEM_REF
-      && TMR_BASE (base)
-      && TREE_CODE (TMR_BASE (base)) != SSA_NAME)
+  /* The tree oracle doesn't like bases that are neither decls
+     nor indirect references of SSA names.  */
+  if (!DECL_P (base)
+      && (TREE_CODE (base) != MEM_REF
+         || TREE_CODE (TREE_OPERAND (base, 0)) != SSA_NAME)
+      && (TREE_CODE (base) != TARGET_MEM_REF
+         || (TMR_BASE (base)
+             && TREE_CODE (TMR_BASE (base)) != SSA_NAME)))
     return false;

   /* If this is a reference based on a partitioned decl replace the



More information about the Gcc-bugs mailing list