Commit 876d1fa3 by Mark Mitchell Committed by Mark Mitchell

arm.md: Use MEM_COPY_ATTRIBUTES where appropriate throughout.

	* arm.md: Use MEM_COPY_ATTRIBUTES where appropriate throughout.
	Pass MEM_SCALAR_P to arm_gen_store_multiple where appropriate.

From-SVN: r24787
parent d2551ee4
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> Tue Jan 19 21:20:52 1999 Richard Henderson <rth@cygnus.com>
* recog.c (pop_operand): New function. * recog.c (pop_operand): New function.
......
...@@ -2286,12 +2286,10 @@ ...@@ -2286,12 +2286,10 @@
rtx addr = copy_to_mode_reg (SImode, XEXP (operands[1], 0)); rtx addr = copy_to_mode_reg (SImode, XEXP (operands[1], 0));
mem1 = gen_rtx (MEM, QImode, addr); mem1 = gen_rtx (MEM, QImode, addr);
MEM_VOLATILE_P (mem1) = MEM_VOLATILE_P (operands[1]); MEM_COPY_ATTRIBUTES (mem1, operands[1]);
MEM_IN_STRUCT_P (mem1) = MEM_IN_STRUCT_P (operands[1]);
RTX_UNCHANGING_P (mem1) = RTX_UNCHANGING_P (operands[1]); RTX_UNCHANGING_P (mem1) = RTX_UNCHANGING_P (operands[1]);
mem2 = gen_rtx (MEM, QImode, plus_constant (addr, 1)); mem2 = gen_rtx (MEM, QImode, plus_constant (addr, 1));
MEM_VOLATILE_P (mem2) = MEM_VOLATILE_P (operands[1]); MEM_COPY_ATTRIBUTES (mem2, operands[1]);
MEM_IN_STRUCT_P (mem2) = MEM_IN_STRUCT_P (operands[1]);
RTX_UNCHANGING_P (mem2) = RTX_UNCHANGING_P (operands[1]); RTX_UNCHANGING_P (mem2) = RTX_UNCHANGING_P (operands[1]);
operands[0] = gen_lowpart (SImode, operands[0]); operands[0] = gen_lowpart (SImode, operands[0]);
operands[1] = mem1; operands[1] = mem1;
...@@ -2400,8 +2398,7 @@ ...@@ -2400,8 +2398,7 @@
operands[3] = gen_rtx (REG, SImode, REGNO (operands[0])); operands[3] = gen_rtx (REG, SImode, REGNO (operands[0]));
operands[2] = gen_rtx (MEM, QImode, operands[3]); operands[2] = gen_rtx (MEM, QImode, operands[3]);
MEM_VOLATILE_P (operands[2]) = MEM_VOLATILE_P (operands[1]); MEM_COPY_ATTRIBUTES (operands[2], operands[1]);
MEM_IN_STRUCT_P (operands[2]) = MEM_IN_STRUCT_P (operands[1]);
RTX_UNCHANGING_P (operands[2]) = RTX_UNCHANGING_P (operands[1]); RTX_UNCHANGING_P (operands[2]) = RTX_UNCHANGING_P (operands[1]);
operands[1] = XEXP (operands[1], 0); operands[1] = XEXP (operands[1], 0);
if (GET_CODE (operands[1]) == PLUS if (GET_CODE (operands[1]) == PLUS
...@@ -2471,8 +2468,7 @@ ...@@ -2471,8 +2468,7 @@
HOST_WIDE_INT offset; HOST_WIDE_INT offset;
operands[2] = gen_rtx (MEM, QImode, operands[0]); operands[2] = gen_rtx (MEM, QImode, operands[0]);
MEM_VOLATILE_P (operands[2]) = MEM_VOLATILE_P (operands[1]); MEM_COPY_ATTRIBUTES (operands[2], operands[1]);
MEM_IN_STRUCT_P (operands[2]) = MEM_IN_STRUCT_P (operands[1]);
RTX_UNCHANGING_P (operands[2]) = RTX_UNCHANGING_P (operands[1]); RTX_UNCHANGING_P (operands[2]) = RTX_UNCHANGING_P (operands[1]);
operands[1] = XEXP (operands[1], 0); operands[1] = XEXP (operands[1], 0);
if (GET_CODE (operands[1]) == PLUS if (GET_CODE (operands[1]) == PLUS
...@@ -2892,8 +2888,7 @@ ...@@ -2892,8 +2888,7 @@
new = gen_rtx (MEM, SImode, new = gen_rtx (MEM, SImode,
plus_constant (base, new_offset)); plus_constant (base, new_offset));
MEM_VOLATILE_P (new) = MEM_VOLATILE_P (operands[1]); MEM_COPY_ATTRIBUTES (new, operands[1]);
MEM_IN_STRUCT_P (new) = MEM_IN_STRUCT_P (operands[1]);
RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (operands[1]); RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (operands[1]);
emit_insn (gen_movsi (reg, new)); emit_insn (gen_movsi (reg, new));
if (((INTVAL (offset) & 2) != 0) if (((INTVAL (offset) & 2) != 0)
...@@ -2929,16 +2924,14 @@ ...@@ -2929,16 +2924,14 @@
HOST_WIDE_INT new_offset = INTVAL (offset) ^ 2; HOST_WIDE_INT new_offset = INTVAL (offset) ^ 2;
new = gen_rtx (MEM, SImode, new = gen_rtx (MEM, SImode,
plus_constant (base, new_offset)); plus_constant (base, new_offset));
MEM_VOLATILE_P (new) = MEM_VOLATILE_P (operands[1]); MEM_COPY_ATTRIBUTES (new, operands[1]);
MEM_IN_STRUCT_P (new) = MEM_IN_STRUCT_P (operands[1]);
RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (operands[1]); RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (operands[1]);
emit_insn (gen_movsi (reg, new)); emit_insn (gen_movsi (reg, new));
} }
else else
{ {
new = gen_rtx (MEM, SImode, XEXP (operands[1], 0)); new = gen_rtx (MEM, SImode, XEXP (operands[1], 0));
MEM_VOLATILE_P (new) = MEM_VOLATILE_P (operands[1]); MEM_COPY_ATTRIBUTES (new, operands[1]);
MEM_IN_STRUCT_P (new) = MEM_IN_STRUCT_P (operands[1]);
RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (operands[1]); RTX_UNCHANGING_P (new) = RTX_UNCHANGING_P (operands[1]);
emit_insn (gen_rotated_loadsi (reg, new)); emit_insn (gen_rotated_loadsi (reg, new));
} }
...@@ -3000,12 +2993,10 @@ ...@@ -3000,12 +2993,10 @@
rtx addr = copy_to_mode_reg (SImode, XEXP (operands[1], 0)); rtx addr = copy_to_mode_reg (SImode, XEXP (operands[1], 0));
mem1 = gen_rtx (MEM, QImode, addr); mem1 = gen_rtx (MEM, QImode, addr);
MEM_VOLATILE_P (mem1) = MEM_VOLATILE_P (operands[1]); MEM_COPY_ATTRIBUTES (mem1, operands[1]);
MEM_IN_STRUCT_P (mem1) = MEM_IN_STRUCT_P (operands[1]);
RTX_UNCHANGING_P (mem1) = RTX_UNCHANGING_P (operands[1]); RTX_UNCHANGING_P (mem1) = RTX_UNCHANGING_P (operands[1]);
mem2 = gen_rtx (MEM, QImode, plus_constant (addr, 1)); mem2 = gen_rtx (MEM, QImode, plus_constant (addr, 1));
MEM_VOLATILE_P (mem2) = MEM_VOLATILE_P (operands[1]); MEM_COPY_ATTRIBUTES (mem2, operands[1]);
MEM_IN_STRUCT_P (mem2) = MEM_IN_STRUCT_P (operands[1]);
RTX_UNCHANGING_P (mem2) = RTX_UNCHANGING_P (operands[1]); RTX_UNCHANGING_P (mem2) = RTX_UNCHANGING_P (operands[1]);
operands[0] = gen_lowpart (SImode, operands[0]); operands[0] = gen_lowpart (SImode, operands[0]);
operands[1] = mem1; operands[1] = mem1;
...@@ -3347,7 +3338,8 @@ ...@@ -3347,7 +3338,8 @@
= arm_gen_load_multiple (REGNO (operands[0]), INTVAL (operands[2]), = arm_gen_load_multiple (REGNO (operands[0]), INTVAL (operands[2]),
force_reg (SImode, XEXP (operands[1], 0)), force_reg (SImode, XEXP (operands[1], 0)),
TRUE, FALSE, RTX_UNCHANGING_P(operands[1]), 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 ;; Load multiple with write-back
...@@ -3417,7 +3409,8 @@ ...@@ -3417,7 +3409,8 @@
= arm_gen_store_multiple (REGNO (operands[1]), INTVAL (operands[2]), = arm_gen_store_multiple (REGNO (operands[1]), INTVAL (operands[2]),
force_reg (SImode, XEXP (operands[0], 0)), force_reg (SImode, XEXP (operands[0], 0)),
TRUE, FALSE, RTX_UNCHANGING_P (operands[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 ;; Store multiple with write-back
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment