[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