(canon_hash, cse_insn): MEM is not unchanging if it is in the frame (since
authorRichard Kenner <kenner@gcc.gnu.org>
Thu, 25 Jul 1996 01:47:52 +0000 (21:47 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 25 Jul 1996 01:47:52 +0000 (21:47 -0400)
the temp slot might be reused).

From-SVN: r12562

gcc/cse.c

index ba816d780c0d2762b171f2685e4fa4fa9e540825..b54854e815ee934e3bffb88191b1b75db27171a7 100644 (file)
--- 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)
          {