Commit 378dfce9 by Richard Kenner

(stackadjust/push peepholes): For the adjust/push/push pattern one offset was wrong.

(stackadjust/push peepholes): For the adjust/push/push pattern one offset
was wrong.
Don't use addr for register and and MEM refs.

From-SVN: r8027
parent 4fdd1f85
...@@ -2702,7 +2702,9 @@ ...@@ -2702,7 +2702,9 @@
if (GET_CODE (operands[1]) == CONST_INT) if (GET_CODE (operands[1]) == CONST_INT)
output_asm_insn (output_move_dconst (INTVAL (operands[1]), \"%$%1,0(sp)\"), output_asm_insn (output_move_dconst (INTVAL (operands[1]), \"%$%1,0(sp)\"),
operands); operands);
else if (address_operand (operands[1], SImode)) else if (GET_CODE (operands[1]) != REG
&& GET_CODE (operands[1]) != MEM
&& address_operand (operands[1], SImode))
output_asm_insn (\"addr %a1,0(sp)\", operands); output_asm_insn (\"addr %a1,0(sp)\", operands);
else else
output_asm_insn (\"movd %1,0(sp)\", operands); output_asm_insn (\"movd %1,0(sp)\", operands);
...@@ -2724,15 +2726,19 @@ ...@@ -2724,15 +2726,19 @@
if (GET_CODE (operands[1]) == CONST_INT) if (GET_CODE (operands[1]) == CONST_INT)
output_asm_insn (output_move_dconst (INTVAL (operands[1]), \"%$%1,4(sp)\"), output_asm_insn (output_move_dconst (INTVAL (operands[1]), \"%$%1,4(sp)\"),
operands); operands);
else if (address_operand (operands[1], SImode)) else if (GET_CODE (operands[1]) != REG
output_asm_insn (\"addr %a1,0(sp)\", operands); && GET_CODE (operands[1]) != MEM
&& address_operand (operands[1], SImode))
output_asm_insn (\"addr %a1,4(sp)\", operands);
else else
output_asm_insn (\"movd %1,4(sp)\", operands); output_asm_insn (\"movd %1,4(sp)\", operands);
if (GET_CODE (operands[3]) == CONST_INT) if (GET_CODE (operands[3]) == CONST_INT)
output_asm_insn (output_move_dconst (INTVAL (operands[3]), \"%$%3,0(sp)\"), output_asm_insn (output_move_dconst (INTVAL (operands[3]), \"%$%3,0(sp)\"),
operands); operands);
else if (address_operand (operands[3], SImode)) else if (GET_CODE (operands[3]) != REG
&& GET_CODE (operands[3]) != MEM
&& address_operand (operands[3], SImode))
output_asm_insn (\"addr %a3,0(sp)\", operands); output_asm_insn (\"addr %a3,0(sp)\", operands);
else else
output_asm_insn (\"movd %3,0(sp)\", operands); output_asm_insn (\"movd %3,0(sp)\", operands);
......
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