re PR rtl-optimization/53827 ([alpha]: Invalid insn scheduling in sched1 pass)
authorAlexandre Oliva <aoliva@redhat.com>
Fri, 6 Jul 2012 11:37:14 +0000 (11:37 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Fri, 6 Jul 2012 11:37:14 +0000 (11:37 +0000)
PR rtl-optimization/53827
PR debug/53671
PR debug/49888
* alias.c (memrefs_conflict_p): Adjust offset and size by the
same amount for alignment ANDs.

From-SVN: r189325

gcc/ChangeLog
gcc/alias.c

index 871e023603fa6eac587ea79dc3112f338ccca076..f7a65b96bc00285367473a781ee45510d9856059 100644 (file)
@@ -1,3 +1,11 @@
+2012-07-06  Alexandre Oilva  <aoliva@redhat.com>
+
+       PR rtl-optimization/53827
+       PR debug/53671
+       PR debug/49888
+       * alias.c (memrefs_conflict_p): Adjust offset and size by the
+       same amount for alignment ANDs.
+
 2012-07-06  Tom de Vries  <tom@codesourcery.com>
 
        PR tree-optimization/51879
 2012-07-06  Tom de Vries  <tom@codesourcery.com>
 
        PR tree-optimization/51879
index b6aca343f06a157f276355536bba76e05451e2fc..de9f32c46d6ef72dca60c453dc25f7a01aa206e2 100644 (file)
@@ -2107,7 +2107,7 @@ memrefs_conflict_p (int xsize, rtx x, int ysize, rtx y, HOST_WIDE_INT c)
       if (xsize > 0 && sc < 0 && -uc == (uc & -uc))
        {
          xsize -= sc + 1;
       if (xsize > 0 && sc < 0 && -uc == (uc & -uc))
        {
          xsize -= sc + 1;
-         c -= sc;
+         c -= sc + 1;
          return memrefs_conflict_p (xsize, canon_rtx (XEXP (x, 0)),
                                     ysize, y, c);
        }
          return memrefs_conflict_p (xsize, canon_rtx (XEXP (x, 0)),
                                     ysize, y, c);
        }
@@ -2119,7 +2119,7 @@ memrefs_conflict_p (int xsize, rtx x, int ysize, rtx y, HOST_WIDE_INT c)
       if (ysize > 0 && sc < 0 && -uc == (uc & -uc))
        {
          ysize -= sc + 1;
       if (ysize > 0 && sc < 0 && -uc == (uc & -uc))
        {
          ysize -= sc + 1;
-         c += sc;
+         c += sc + 1;
          return memrefs_conflict_p (xsize, x,
                                     ysize, canon_rtx (XEXP (y, 0)), c);
        }
          return memrefs_conflict_p (xsize, x,
                                     ysize, canon_rtx (XEXP (y, 0)), c);
        }