From: James Van Artsdalen Date: Thu, 17 Sep 1992 05:20:26 +0000 (+0000) Subject: (addsi3,ashlsi3): Handle the case where the stack pointer appears as an X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=442426450eaaabd3136578270ca3443004510f28;p=gcc.git (addsi3,ashlsi3): Handle the case where the stack pointer appears as an index reg. From-SVN: r2140 --- 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);