Commit 3d422cb1 by Alexandre Oliva Committed by Alexandre Oliva

sh.c (shiftcosts): Don't get INTVAL before testing whether X is a CONST_INT.

* config/sh/sh.c (shiftcosts): Don't get INTVAL before testing
whether X is a CONST_INT.
(addsubcosts): Likewise.

From-SVN: r37911
parent b927e8c7
2000-12-01 Alexandre Oliva <aoliva@redhat.com> 2000-12-01 Alexandre Oliva <aoliva@redhat.com>
* config/sh/sh.c (shiftcosts): Don't get INTVAL before testing
whether X is a CONST_INT.
(addsubcosts): Likewise.
* config/sh/sh.h (OUTPUT_ADDR_CONST_EXTRA): Use INTVAL instead of * config/sh/sh.h (OUTPUT_ADDR_CONST_EXTRA): Use INTVAL instead of
mis-used XINT. mis-used XINT.
(ARG_POINTER_REGNUM): Set to AP_REG. (ARG_POINTER_REGNUM): Set to AP_REG.
......
...@@ -965,12 +965,14 @@ int ...@@ -965,12 +965,14 @@ int
shiftcosts (x) shiftcosts (x)
rtx x; rtx x;
{ {
int value = INTVAL (XEXP (x, 1)); int value;
/* If shift by a non constant, then this will be expensive. */ /* If shift by a non constant, then this will be expensive. */
if (GET_CODE (XEXP (x, 1)) != CONST_INT) if (GET_CODE (XEXP (x, 1)) != CONST_INT)
return SH_DYNAMIC_SHIFT_COST; return SH_DYNAMIC_SHIFT_COST;
value = INTVAL (XEXP (x, 1));
/* Otherwise, return the true cost in instructions. */ /* Otherwise, return the true cost in instructions. */
if (GET_CODE (x) == ASHIFTRT) if (GET_CODE (x) == ASHIFTRT)
{ {
...@@ -1025,7 +1027,8 @@ addsubcosts (x) ...@@ -1025,7 +1027,8 @@ addsubcosts (x)
return 1; return 1;
/* Likewise for small constants. */ /* Likewise for small constants. */
if (CONST_OK_FOR_I (INTVAL (XEXP (x, 1)))) if (GET_CODE (XEXP (x, 1)) == CONST_INT
&& CONST_OK_FOR_I (INTVAL (XEXP (x, 1))))
return 1; return 1;
/* Any other constant requires a 2 cycle pc-relative load plus an /* Any other constant requires a 2 cycle pc-relative load plus an
......
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