* alias.c (memrefs_conflict_p): A second ANDed address
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 6 Dec 1998 01:23:01 +0000 (01:23 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 6 Dec 1998 01:23:01 +0000 (01:23 +0000)
        disables the aligned address optimization.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24121 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/alias.c

index af1fdbb..0d955f0 100644 (file)
@@ -1,3 +1,8 @@
+Sun Dec  6 01:19:46 1998  Richard Henderson  <rth@cygnus.com>
+
+       * alias.c (memrefs_conflict_p): A second ANDed address
+       disables the aligned address optimization.
+
 Sat Dec  5 18:48:25 1998  Richard Henderson  <rth@cygnus.com>
 
        * alpha.c (alpha_emit_set_const_1): Fix parenthesis error
index 909176e..ce5a499 100644 (file)
@@ -1055,7 +1055,7 @@ memrefs_conflict_p (xsize, x, ysize, y, c)
      at least as large as the alignment, assume no other overlap.  */
   if (GET_CODE (x) == AND && GET_CODE (XEXP (x, 1)) == CONST_INT)
     {
-      if (ysize < -INTVAL (XEXP (x, 1)))
+      if (GET_CODE (y) == AND || ysize < -INTVAL (XEXP (x, 1)))
        xsize = -1;
       return memrefs_conflict_p (xsize, XEXP (x, 0), ysize, y, c);
     }
@@ -1065,7 +1065,7 @@ memrefs_conflict_p (xsize, x, ysize, y, c)
         may yet be able to determine that we can not overlap.  But we 
         also need to that we are far enough from the end not to overlap
         a following reference, so we do nothing with that for now.  */
-      if (xsize < -INTVAL (XEXP (y, 1)))
+      if (GET_CODE (x) == AND || xsize < -INTVAL (XEXP (y, 1)))
        ysize = -1;
       return memrefs_conflict_p (xsize, x, ysize, XEXP (y, 0), c);
     }