summaryrefslogtreecommitdiffstats
path: root/gcc/cse.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1996-07-25 01:47:52 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1996-07-25 01:47:52 +0000
commitb57a11614526a501e1ca7037256dafb995074101 (patch)
treed32255c9069f1a7865b6c44e8c2832c5a581731c /gcc/cse.c
parent5804ae7d4751731f70368f70cdfe5b8eee394ea5 (diff)
downloadppe42-gcc-b57a11614526a501e1ca7037256dafb995074101.tar.gz
ppe42-gcc-b57a11614526a501e1ca7037256dafb995074101.zip
(canon_hash, cse_insn): MEM is not unchanging if it is in the frame (since
the temp slot might be reused). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@12562 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cse.c')
-rw-r--r--gcc/cse.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index ba816d780c0..b54854e815e 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -1945,7 +1945,7 @@ canon_hash (x, mode)
do_not_record = 1;
return 0;
}
- if (! RTX_UNCHANGING_P (x))
+ if (! RTX_UNCHANGING_P (x) || FIXED_BASE_PLUS_P (XEXP (x, 0)))
{
hash_arg_in_memory = 1;
if (MEM_IN_STRUCT_P (x)) hash_arg_in_struct = 1;
@@ -7377,7 +7377,9 @@ cse_insn (insn, in_libcall_block)
elt = insert (dest, sets[i].src_elt,
sets[i].dest_hash, GET_MODE (dest));
elt->in_memory = (GET_CODE (sets[i].inner_dest) == MEM
- && ! RTX_UNCHANGING_P (sets[i].inner_dest));
+ && (! RTX_UNCHANGING_P (sets[i].inner_dest)
+ || FIXED_BASE_PLUS_P (XEXP (sets[i].inner_dest,
+ 0))));
if (elt->in_memory)
{
OpenPOWER on IntegriCloud