aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-12-05 17:23:01 -0800
committerRichard Henderson <rth@gcc.gnu.org>1998-12-05 17:23:01 -0800
commit02e3377d92148cb2d53d58aec19ce080107db49b (patch)
treede29d6055c3b79ef7b7ec74eb92b6be522669cbf
parent07f04c916210ef346d9f314418daca775bf37859 (diff)
downloadgcc-02e3377d92148cb2d53d58aec19ce080107db49b.zip
gcc-02e3377d92148cb2d53d58aec19ce080107db49b.tar.gz
gcc-02e3377d92148cb2d53d58aec19ce080107db49b.tar.bz2
alias.c (memrefs_conflict_p): A second ANDed address disables the aligned address optimization.
* alias.c (memrefs_conflict_p): A second ANDed address disables the aligned address optimization. From-SVN: r24121
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/alias.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index af1fdbb..0d955f0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/alias.c b/gcc/alias.c
index 909176e..ce5a499 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -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);
}