From 0afeb08a70db2010b7c0fc5db09c1c5c454271d7 Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Fri, 16 Feb 1996 16:59:27 +0000 Subject: [PATCH] (ix86_expand_binary_operator): Allow for operand1 of MINUS to be CONST_INT From-SVN: r11289 --- gcc/config/i386/i386.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index aef0c8ec479..212c67b3aa0 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1560,6 +1560,14 @@ ix86_expand_binary_operator (code, mode, operands) if (GET_CODE (operands[2]) == MEM) operands[2] = force_reg (GET_MODE (operands[2]), operands[2]); + + if (GET_CODE (operands[1]) == CONST_INT && code == MINUS) + { + rtx temp = gen_reg_rtx (GET_MODE (operands[0])); + emit_move_insn (temp, operands[1]); + operands[1] = temp; + return TRUE; + } } if (!ix86_binary_operator_ok (code, mode, operands)) @@ -1584,6 +1592,14 @@ ix86_expand_binary_operator (code, mode, operands) modified = TRUE; } + if (GET_CODE (operands[1]) == CONST_INT && code == MINUS) + { + rtx temp = gen_reg_rtx (GET_MODE (operands[0])); + emit_move_insn (temp, operands[1]); + operands[1] = temp; + return TRUE; + } + if (modified && !ix86_binary_operator_ok (code, mode, operands)) return FALSE; } @@ -1603,7 +1619,9 @@ ix86_binary_operator_ok (code, mode, operands) enum machine_mode mode; rtx operands[3]; { - return TRUE; + return (GET_CODE (operands[1]) != MEM && GET_CODE (operands[2]) != MEM + && GET_CODE (operands[1]) != CONST_INT) + || GET_RTX_CLASS (code) == 'c'; } /* Attempt to expand a unary operator. Make the expansion closer to the -- 2.30.2