(change_address): If MEMREF isn't changing, return the old one.
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 8 Nov 1996 23:55:41 +0000 (18:55 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 8 Nov 1996 23:55:41 +0000 (18:55 -0500)
From-SVN: r13115

gcc/emit-rtl.c

index 337e9732f52aff3eca04c3f6ccc7877c10683078..66b5d22696e7c182b61a99f46b65fc63d61f7af4 100644 (file)
@@ -1376,6 +1376,9 @@ change_address (memref, mode, addr)
   else
     addr = memory_address (mode, addr);
        
+  if (rtx_equal_p (addr, XEXP (memref, 0)) && mode == GET_MODE (memref))
+    return memref;
+
   new = gen_rtx (MEM, mode, addr);
   MEM_VOLATILE_P (new) = MEM_VOLATILE_P (memref);
   RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (memref);