aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTorbjorn Granlund <tege@gnu.org>1992-09-04 21:27:17 +0000
committerTorbjorn Granlund <tege@gnu.org>1992-09-04 21:27:17 +0000
commit9682683d886a6af57ad62fee36a74c6a22cdf939 (patch)
tree040f3cbbc70988ba3870f169c33fe4e1ccdb81b9 /gcc
parent1402d22caaff904d4561e7a6050e1b8df1ece89f (diff)
downloadgcc-9682683d886a6af57ad62fee36a74c6a22cdf939.zip
gcc-9682683d886a6af57ad62fee36a74c6a22cdf939.tar.gz
gcc-9682683d886a6af57ad62fee36a74c6a22cdf939.tar.bz2
(output_move_double): Use %R to store at auto-incr/decr addr.
(output_move_double): Use %R to store at auto-incr/decr addr. Split incr and decr cases for store. From-SVN: r2051
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index aff943c..0f8b3b5 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -787,11 +787,15 @@ output_move_double (operands)
if (optype0 == MEMOP)
{
rtx addr = XEXP (operands[0], 0);
- if (GET_CODE (addr) == POST_INC || GET_CODE (addr) == POST_DEC
- || GET_CODE (addr) == PRE_INC || GET_CODE (addr) == PRE_DEC)
+ if (GET_CODE (addr) == POST_INC || GET_CODE (addr) == PRE_INC)
{
operands[0] = gen_rtx (MEM, SImode, addr);
- return "stw%M0 %1,%0\n\tstw%M0 %1,%0";
+ return "stw%M0 %1,%0\n\tstw%M0 %R1,%0";
+ }
+ else if (GET_CODE (addr) == POST_DEC || GET_CODE (addr) == PRE_DEC)
+ {
+ operands[0] = gen_rtx (MEM, SImode, addr);
+ return "stw%M0 %R1,%0\n\tstw%M0 %1,%0";
}
}
if (optype1 == MEMOP)
@@ -1207,7 +1211,7 @@ output_block_move (operands, size_is_constant)
if (size_is_constant)
{
- /* Size is an compile-time determined, and also not
+ /* Size is compile-time determined, and also not
very small (such small cases are handled above). */
operands[4] = gen_rtx (CONST_INT, VOIDmode, n_bytes - 4);
output_asm_insn ("ldo %4(0),%2", operands);