diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-07-24 21:47:52 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-07-24 21:47:52 -0400 |
commit | 9ad91d711549e9c3def747befde85296702511d4 (patch) | |
tree | d32255c9069f1a7865b6c44e8c2832c5a581731c /gcc | |
parent | 7c225e88059d5c628b0f5449fd400f57223d9d37 (diff) | |
download | gcc-9ad91d711549e9c3def747befde85296702511d4.zip gcc-9ad91d711549e9c3def747befde85296702511d4.tar.gz gcc-9ad91d711549e9c3def747befde85296702511d4.tar.bz2 |
(canon_hash, cse_insn): MEM is not unchanging if it is in the frame (since
the temp slot might be reused).
From-SVN: r12562
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cse.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -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) { |