summaryrefslogtreecommitdiff
path: root/gcc/alias.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-04-22 18:17:06 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-04-22 18:17:06 +0000
commitd7b592b0767aeb3de88ff70e528d0ac57fb6ec3e (patch)
tree44312bb45a57f13062f0c55c4052ae1c95e01c6b /gcc/alias.c
parent02516fb963e11f14d14af2872cd6cc89f31a4050 (diff)
downloadgcc-d7b592b0767aeb3de88ff70e528d0ac57fb6ec3e.tar.gz
* alias.c (canon_true_dependence): Special case (mem:blk (scratch)).
* gcse.c (free_insn_expr_list_list): New. (clear_modify_mem_tables): Use it. Fix bit set usage. (canon_list_insert): Use EXPR_LISTs for expressions. (record_last_mem_set_info): Factor BLOCK_NUM (insn). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52624 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/alias.c')
-rw-r--r--gcc/alias.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/alias.c b/gcc/alias.c
index 29da8ffafb3..24874f4f63d 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -2121,6 +2121,13 @@ canon_true_dependence (mem, mem_mode, mem_addr, x, varies)
if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem))
return 1;
+ /* (mem:BLK (scratch)) is a special mechanism to conflict with everything.
+ This is used in epilogue deallocation functions. */
+ if (GET_MODE (x) == BLKmode && GET_CODE (XEXP (x, 0)) == SCRATCH)
+ return 1;
+ if (GET_MODE (mem) == BLKmode && GET_CODE (XEXP (mem, 0)) == SCRATCH)
+ return 1;
+
if (DIFFERENT_ALIAS_SETS_P (x, mem))
return 0;