http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53827
Alexandre Oliva <aoliva at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED AssignedTo|unassigned at gcc dot |aoliva at gcc dot gnu.org |gnu.org | --- Comment #2 from Alexandre Oliva <aoliva at gcc dot gnu.org> 2012-07-02 12:07:09 UTC --- My thinko. This patchlet ought to fix it. Testing now... Index: gcc/alias.c =================================================================== --- gcc/alias.c.orig 2012-07-02 09:04:06.193137799 -0300 +++ gcc/alias.c 2012-07-02 09:04:08.000000000 -0300 @@ -2107,7 +2107,7 @@ memrefs_conflict_p (int xsize, rtx x, in 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); } @@ -2119,7 +2119,7 @@ memrefs_conflict_p (int xsize, rtx x, in 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); }