stmt_kills_ref_p_1 wants to compare MEM_REF offset but compares
the pointers instead (which are previously compared as equal).
This breaks my fix for PR57303.

Fixed thus, applied as obvious.

Richard.

2013-05-17  Richard Biener  <rguent...@suse.de>

        * tree-ssa-alias.c (stmt_kills_ref_p_1): Properly compare
        MEM_REF offsets.

Index: gcc/tree-ssa-alias.c
===================================================================
--- gcc/tree-ssa-alias.c        (revision 199004)
+++ gcc/tree-ssa-alias.c        (working copy)
@@ -2002,8 +2002,8 @@ stmt_kills_ref_p_1 (gimple stmt, ao_ref
          if (TREE_CODE (base) == MEM_REF && TREE_CODE (ref->base) == MEM_REF
              && TREE_OPERAND (base, 0) == TREE_OPERAND (ref->base, 0))
            {
-             if (!tree_int_cst_equal (TREE_OPERAND (base, 0),
-                                      TREE_OPERAND (ref->base, 0)))
+             if (!tree_int_cst_equal (TREE_OPERAND (base, 1),
+                                      TREE_OPERAND (ref->base, 1)))
                {
                  double_int off1 = mem_ref_offset (base);
                  off1 = off1.lshift (BITS_PER_UNIT == 8

Reply via email to