aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-10-30 22:11:45 +0000
committerRichard Stallman <rms@gnu.org>1993-10-30 22:11:45 +0000
commite7c2087cea5f1d1b45e9abfe4660dd1be52bb42d (patch)
tree0ab2767e411525d8696038f59bd376c5f87ea764 /gcc
parentf55ef7b071aa128ebde81c03494d9a4f3b90d7ab (diff)
downloadgcc-e7c2087cea5f1d1b45e9abfe4660dd1be52bb42d.zip
gcc-e7c2087cea5f1d1b45e9abfe4660dd1be52bb42d.tar.gz
gcc-e7c2087cea5f1d1b45e9abfe4660dd1be52bb42d.tar.bz2
(output_move_double): Extend the special case
for *--sp = sp[N] to handle 12 bytes as well as 8 bytes. From-SVN: r5951
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i386/i386.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 8ef4289..384cfb0 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -444,12 +444,14 @@ output_move_double (operands)
}
/* If insn is effectively movd N (sp),-(sp) then we will do the
- high word first. We should use the adjusted operand 1 (which is N+4 (sp))
- for the low word as well, to compensate for the first decrement of sp. */
+ high word first. We should use the adjusted operand 1
+ (which is N+4 (sp) or N+8 (sp))
+ for the low word and middle word as well,
+ to compensate for the first decrement of sp. */
if (optype0 == PUSHOP
&& REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM
&& reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
- operands[1] = latehalf[1];
+ middlehalf[1] = operands[1] = latehalf[1];
/* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)),
if the upper part of reg N does not appear in the MEM, arrange to