alias.c (memrefs_conflict_p): A second ANDed address disables the aligned address...
authorRichard Henderson <rth@cygnus.com>
Sun, 6 Dec 1998 01:23:01 +0000 (17:23 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 6 Dec 1998 01:23:01 +0000 (17:23 -0800)
        * alias.c (memrefs_conflict_p): A second ANDed address
        disables the aligned address optimization.

From-SVN: r24121

gcc/ChangeLog
gcc/alias.c

index af1fdbbe3a813b7744fb18676014e806ef3765dd..0d955f0a36f597906ad73c4eb2123a4024e08de4 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 909176ea3fb951c89150db699c81e4e0cddc226e..ce5a499436535ac1d8538d36eed205933c6ffc93 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);
     }