From 442426450eaaabd3136578270ca3443004510f28 Mon Sep 17 00:00:00 2001 From: James Van Artsdalen Date: Thu, 17 Sep 1992 05:20:26 +0000 Subject: [PATCH] (addsi3,ashlsi3): Handle the case where the stack pointer appears as an index reg. From-SVN: r2140 --- gcc/config/i386/i386.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 6ba86cd2629..2d2f28eb579 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1392,8 +1392,20 @@ if (! TARGET_486 || ! REG_P (operands[2])) { CC_STATUS_INIT; - operands[1] = SET_SRC (PATTERN (insn)); - return AS2 (lea%L0,%a1,%0); + + if (operands[2] == stack_pointer_rtx) + { + rtx temp; + + temp = operands[1]; + operands[1] = operands[2]; + operands[2] = temp; + } + if (operands[2] != stack_pointer_rtx) + { + operands[1] = SET_SRC (PATTERN (insn)); + return AS2 (lea%L0,%a1,%0); + } } output_asm_insn (AS2 (mov%L0,%1,%0), operands); @@ -2391,6 +2403,12 @@ else { CC_STATUS_INIT; + + if (operands[1] == stack_pointer_rtx) + { + output_asm_insn (AS2 (mov%L0,%1,%0), operands); + operands[1] = operands[0]; + } operands[1] = gen_rtx (MULT, SImode, operands[1], GEN_INT (1 << INTVAL (operands[2]))); return AS2 (lea%L0,%a1,%0); -- 2.30.2