aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1999-10-16 21:20:32 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1999-10-16 21:20:32 +0000
commitb7e887dcfdbba2fba4c18f8198cd4adc17bc7f8d (patch)
treef40ce2016ed5a83575643e200970d49d5da03e5c /gcc
parentbdd6c980ac6cc17c4d41ffec205be847dade7b4c (diff)
Sat Oct 16 00:07:01 1999 Richard Henderson <rth@cygnus.com>
* gcse.c (hash_expr_1): Add in MEM_ALIAS_SET. (expr_equiv_p): Reject memories with different alias sets. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-2_95-branch@30047 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gcse.c9
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 14b9cffc274..7e6b3e08d83 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Sat Oct 16 15:20:15 1999 Jeffrey A Law (law@cygnus.com)
+
+ Sat Oct 16 00:07:01 1999 Richard Henderson <rth@cygnus.com>
+ * gcse.c (hash_expr_1): Add in MEM_ALIAS_SET.
+ (expr_equiv_p): Reject memories with different alias sets.
+
Wed Oct 13 01:46:14 1999 Jeffrey A Law (law@cygnus.com)
Wed Oct 13 01:44:29 1999 Carol LePage <carolo@hal.com>
diff --git a/gcc/gcse.c b/gcc/gcse.c
index deebc73e0a1..cddd7ac63df 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -1394,6 +1394,7 @@ hash_expr_1 (x, mode, do_not_record_p)
return 0;
}
hash += (unsigned) MEM;
+ hash += MEM_ALIAS_SET (x);
x = XEXP (x, 0);
goto repeat;
@@ -1526,6 +1527,14 @@ expr_equiv_p (x, y)
case REG:
return REGNO (x) == REGNO (y);
+ case MEM:
+ /* Can't merge two expressions in different alias sets, since we can
+ decide that the expression is transparent in a block when it isn't,
+ due to it being set with the different alias set. */
+ if (MEM_ALIAS_SET (x) != MEM_ALIAS_SET (y))
+ return 0;
+ break;
+
/* For commutative operations, check both orders. */
case PLUS:
case MULT: