summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/gcse.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>1999-11-01 08:28:22 +0000
committerobrien <obrien@FreeBSD.org>1999-11-01 08:28:22 +0000
commit4b66dfb9030fa6d9912fcf3dfbe3fa8a4fa0a3fc (patch)
tree0e33a2f257e9df8e4af5c0ecf0304ce5239fa3bf /contrib/gcc/gcse.c
parent1d061a7b0a9151a14d61c129611f720697c28e76 (diff)
downloadFreeBSD-src-4b66dfb9030fa6d9912fcf3dfbe3fa8a4fa0a3fc.zip
FreeBSD-src-4b66dfb9030fa6d9912fcf3dfbe3fa8a4fa0a3fc.tar.gz
Virgin import of the GCC 2.95.2 compilers
Diffstat (limited to 'contrib/gcc/gcse.c')
-rw-r--r--contrib/gcc/gcse.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/contrib/gcc/gcse.c b/contrib/gcc/gcse.c
index deebc73..cddd7ac 100644
--- a/contrib/gcc/gcse.c
+++ b/contrib/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:
OpenPOWER on IntegriCloud