diff options
author | obrien <obrien@FreeBSD.org> | 1999-11-01 08:28:22 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 1999-11-01 08:28:22 +0000 |
commit | 4b66dfb9030fa6d9912fcf3dfbe3fa8a4fa0a3fc (patch) | |
tree | 0e33a2f257e9df8e4af5c0ecf0304ce5239fa3bf /contrib/gcc/gcse.c | |
parent | 1d061a7b0a9151a14d61c129611f720697c28e76 (diff) | |
download | FreeBSD-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.c | 9 |
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: |