arm.md: Use MEM_COPY_ATTRIBUTES where appropriate throughout.
authorMark Mitchell <mark@markmitchell.com>
Wed, 20 Jan 1999 12:52:32 +0000 (12:52 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 20 Jan 1999 12:52:32 +0000 (12:52 +0000)
* arm.md: Use MEM_COPY_ATTRIBUTES where appropriate throughout.
Pass MEM_SCALAR_P to arm_gen_store_multiple where appropriate.

From-SVN: r24787

gcc/ChangeLog
gcc/config/arm/arm.md

index 9da7c93e6ed96070c20ccd74c3264c84feda055c..1c51e75e761ed15d716fe7e14de0d8f2b9aab192 100644 (file)
@@ -1,3 +1,8 @@
+Wed Jan 20 12:51:42 1999  Mark Mitchell  <mark@markmitchell.com>
+
+       * arm.md: Use MEM_COPY_ATTRIBUTES where appropriate throughout.
+       Pass MEM_SCALAR_P to arm_gen_store_multiple where appropriate.
+
 Tue Jan 19 21:20:52 1999  Richard Henderson  <rth@cygnus.com>
 
        * recog.c (pop_operand): New function.
index 6f38a8073aa059f7dcff8ca051ae9856f776d1db..1b6fa73120be979f79fba8afc45d13e58fe6fd84 100644 (file)
   rtx addr = copy_to_mode_reg (SImode, XEXP (operands[1], 0));
 
   mem1 = gen_rtx (MEM, QImode, addr);
-  MEM_VOLATILE_P (mem1) = MEM_VOLATILE_P (operands[1]);
-  MEM_IN_STRUCT_P (mem1) = MEM_IN_STRUCT_P (operands[1]);
+  MEM_COPY_ATTRIBUTES (mem1, operands[1]);
   RTX_UNCHANGING_P (mem1) = RTX_UNCHANGING_P (operands[1]);
   mem2 = gen_rtx (MEM, QImode, plus_constant (addr, 1));
-  MEM_VOLATILE_P (mem2) = MEM_VOLATILE_P (operands[1]);
-  MEM_IN_STRUCT_P (mem2) = MEM_IN_STRUCT_P (operands[1]);
+  MEM_COPY_ATTRIBUTES (mem2, operands[1]);
   RTX_UNCHANGING_P (mem2) = RTX_UNCHANGING_P (operands[1]);
   operands[0] = gen_lowpart (SImode, operands[0]);
   operands[1] = mem1;
 
     operands[3] = gen_rtx (REG, SImode, REGNO (operands[0]));
     operands[2] = gen_rtx (MEM, QImode, operands[3]);
-    MEM_VOLATILE_P (operands[2]) = MEM_VOLATILE_P (operands[1]);
-    MEM_IN_STRUCT_P (operands[2]) = MEM_IN_STRUCT_P (operands[1]);
+    MEM_COPY_ATTRIBUTES (operands[2], operands[1]);
     RTX_UNCHANGING_P (operands[2]) = RTX_UNCHANGING_P (operands[1]);
     operands[1] = XEXP (operands[1], 0);
     if (GET_CODE (operands[1]) == PLUS
     HOST_WIDE_INT offset;
 
     operands[2] = gen_rtx (MEM, QImode, operands[0]);
-    MEM_VOLATILE_P (operands[2]) = MEM_VOLATILE_P (operands[1]);
-    MEM_IN_STRUCT_P (operands[2]) = MEM_IN_STRUCT_P (operands[1]);
+    MEM_COPY_ATTRIBUTES (operands[2], operands[1]);
     RTX_UNCHANGING_P (operands[2]) = RTX_UNCHANGING_P (operands[1]);
     operands[1] = XEXP (operands[1], 0);
     if (GET_CODE (operands[1]) == PLUS
 
                      new = gen_rtx (MEM, SImode,
                                     plus_constant (base, new_offset));
-                     MEM_VOLATILE_P (new) = MEM_VOLATILE_P (operands[1]);
-                     MEM_IN_STRUCT_P (new) = MEM_IN_STRUCT_P (operands[1]);
+                     MEM_COPY_ATTRIBUTES (new, operands[1]);
                      RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (operands[1]);
                      emit_insn (gen_movsi (reg, new));
                      if (((INTVAL (offset) & 2) != 0)
                          HOST_WIDE_INT new_offset = INTVAL (offset) ^ 2;
                          new = gen_rtx (MEM, SImode,
                                         plus_constant (base, new_offset));
-                         MEM_VOLATILE_P (new) = MEM_VOLATILE_P (operands[1]);
-                         MEM_IN_STRUCT_P (new) = MEM_IN_STRUCT_P (operands[1]);
+                          MEM_COPY_ATTRIBUTES (new, operands[1]);
                          RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (operands[1]);
                          emit_insn (gen_movsi (reg, new));
                        }
                      else
                        {
                          new = gen_rtx (MEM, SImode, XEXP (operands[1], 0));
-                         MEM_VOLATILE_P (new) = MEM_VOLATILE_P (operands[1]);
-                         MEM_IN_STRUCT_P (new) = MEM_IN_STRUCT_P (operands[1]);
+                         MEM_COPY_ATTRIBUTES (new, operands[1]);
                          RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (operands[1]);
                          emit_insn (gen_rotated_loadsi (reg, new));
                        }
   rtx addr = copy_to_mode_reg (SImode, XEXP (operands[1], 0));
 
   mem1 = gen_rtx (MEM, QImode, addr);
-  MEM_VOLATILE_P (mem1) = MEM_VOLATILE_P (operands[1]);
-  MEM_IN_STRUCT_P (mem1) = MEM_IN_STRUCT_P (operands[1]);
+  MEM_COPY_ATTRIBUTES (mem1, operands[1]);
   RTX_UNCHANGING_P (mem1) = RTX_UNCHANGING_P (operands[1]);
   mem2 = gen_rtx (MEM, QImode, plus_constant (addr, 1));
-  MEM_VOLATILE_P (mem2) = MEM_VOLATILE_P (operands[1]);
-  MEM_IN_STRUCT_P (mem2) = MEM_IN_STRUCT_P (operands[1]);
+  MEM_COPY_ATTRIBUTES (mem2, operands[1]);
   RTX_UNCHANGING_P (mem2) = RTX_UNCHANGING_P (operands[1]);
   operands[0] = gen_lowpart (SImode, operands[0]);
   operands[1] = mem1;
     = arm_gen_load_multiple (REGNO (operands[0]), INTVAL (operands[2]),
                             force_reg (SImode, XEXP (operands[1], 0)),
                             TRUE, FALSE, RTX_UNCHANGING_P(operands[1]),
-                            MEM_IN_STRUCT_P(operands[1]));
+                            MEM_IN_STRUCT_P(operands[1]),
+                            MEM_SCALAR_P (operands[1]));
 ")
 
 ;; Load multiple with write-back
     = arm_gen_store_multiple (REGNO (operands[1]), INTVAL (operands[2]),
                              force_reg (SImode, XEXP (operands[0], 0)),
                              TRUE, FALSE, RTX_UNCHANGING_P (operands[0]),
-                             MEM_IN_STRUCT_P(operands[0]));
+                             MEM_IN_STRUCT_P(operands[0]), 
+                             MEM_SCALAR_P (operands[0]));
 ")
 
 ;; Store multiple with write-back