Commit bec2e359 by Jim Wilson

*** empty log message ***

From-SVN: r839
parent ea47d37c
...@@ -4424,8 +4424,7 @@ force_to_mode (x, mode, bits, reg) ...@@ -4424,8 +4424,7 @@ force_to_mode (x, mode, bits, reg)
case CONST_INT: case CONST_INT:
if (bits < HOST_BITS_PER_INT) if (bits < HOST_BITS_PER_INT)
x = gen_rtx (CONST_INT, VOIDmode, x = gen_rtx (CONST_INT, VOIDmode, INTVAL (x) & ((1 << bits) - 1));
INTVAL (x) & ((1 << (bits + 1)) - 1));
return x; return x;
case SUBREG: case SUBREG:
...@@ -4452,7 +4451,7 @@ force_to_mode (x, mode, bits, reg) ...@@ -4452,7 +4451,7 @@ force_to_mode (x, mode, bits, reg)
reg); reg);
if (bits < HOST_BITS_PER_INT) if (bits < HOST_BITS_PER_INT)
mask &= (1 << (bits + 1)) - 1; mask &= (1 << bits) - 1;
x = simplify_and_const_int (x, mode, op, mask); x = simplify_and_const_int (x, mode, op, mask);
...@@ -4462,7 +4461,7 @@ force_to_mode (x, mode, bits, reg) ...@@ -4462,7 +4461,7 @@ force_to_mode (x, mode, bits, reg)
if (GET_CODE (x) == AND && GET_CODE (XEXP (x, 1)) == CONST_INT if (GET_CODE (x) == AND && GET_CODE (XEXP (x, 1)) == CONST_INT
&& bits < HOST_BITS_PER_INT && bits < HOST_BITS_PER_INT
&& INTVAL (XEXP (x, 1)) == (1 << (bits + 1)) - 1) && INTVAL (XEXP (x, 1)) == (1 << bits) - 1)
x = XEXP (x, 0); x = XEXP (x, 0);
return x; return x;
} }
......
...@@ -1065,56 +1065,59 @@ extern union tree_node *current_function_decl; ...@@ -1065,56 +1065,59 @@ extern union tree_node *current_function_decl;
If you change this, execute "rm explow.o recog.o reload.o". */ If you change this, execute "rm explow.o recog.o reload.o". */
#define RTX_OK_FOR_BASE_P(X) \
((GET_CODE (X) == REG && REG_OK_FOR_BASE_P (X)) \
|| (GET_CODE (X) == SUBREG \
&& GET_CODE (SUBREG_REG (X)) == REG \
&& REG_OK_FOR_BASE_P (SUBREG_REG (X))))
#define RTX_OK_FOR_INDEX_P(X) \
((GET_CODE (X) == REG && REG_OK_FOR_INDEX_P (X)) \
|| (GET_CODE (X) == SUBREG \
&& GET_CODE (SUBREG_REG (X)) == REG \
&& REG_OK_FOR_INDEX_P (SUBREG_REG (X))))
#define RTX_OK_FOR_OFFSET_P(X) \
(GET_CODE (X) == CONST_INT && INTVAL (X) >= -0x1000 && INTVAL (X) < 0x1000)
#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
{ if (GET_CODE (X) == REG) \ { if (RTX_OK_FOR_BASE_P (X)) \
{ if (REG_OK_FOR_BASE_P (X)) goto ADDR; } \ goto ADDR; \
else if (GET_CODE (X) == PLUS) \ else if (GET_CODE (X) == PLUS) \
{ \ { \
if (flag_pic && XEXP (X, 0) == pic_offset_table_rtx)\ register rtx op0 = XEXP (X, 0); \
register rtx op1 = XEXP (X, 1); \
if (flag_pic && op0 == pic_offset_table_rtx) \
{ \ { \
if (GET_CODE (XEXP (X, 1)) == REG \ if (RTX_OK_FOR_BASE_P (op1)) \
&& REG_OK_FOR_BASE_P (XEXP (X, 1))) \
goto ADDR; \ goto ADDR; \
else if (flag_pic == 1 \ else if (flag_pic == 1 \
&& GET_CODE (XEXP (X, 1)) != REG \ && GET_CODE (op1) != REG \
&& GET_CODE (XEXP (X, 1)) != LO_SUM \ && GET_CODE (op1) != LO_SUM \
&& GET_CODE (XEXP (X, 1)) != MEM) \ && GET_CODE (op1) != MEM) \
goto ADDR; \ goto ADDR; \
} \ } \
else if (GET_CODE (XEXP (X, 0)) == REG \ else if (RTX_OK_FOR_BASE_P (op0)) \
&& REG_OK_FOR_BASE_P (XEXP (X, 0))) \
{ \ { \
if (GET_CODE (XEXP (X, 1)) == REG \ if (RTX_OK_FOR_INDEX_P (op1) \
&& REG_OK_FOR_INDEX_P (XEXP (X, 1))) \ || RTX_OK_FOR_OFFSET_P (op1)) \
goto ADDR; \
if (GET_CODE (XEXP (X, 1)) == CONST_INT \
&& INTVAL (XEXP (X, 1)) >= -0x1000 \
&& INTVAL (XEXP (X, 1)) < 0x1000) \
goto ADDR; \ goto ADDR; \
} \ } \
else if (GET_CODE (XEXP (X, 1)) == REG \ else if (RTX_OK_FOR_BASE_P (op1)) \
&& REG_OK_FOR_BASE_P (XEXP (X, 1))) \
{ \ { \
if (GET_CODE (XEXP (X, 0)) == REG \ if (RTX_OK_FOR_INDEX_P (op0) \
&& REG_OK_FOR_INDEX_P (XEXP (X, 0))) \ || RTX_OK_FOR_OFFSET_P (op0)) \
goto ADDR; \
if (GET_CODE (XEXP (X, 0)) == CONST_INT \
&& INTVAL (XEXP (X, 0)) >= -0x1000 \
&& INTVAL (XEXP (X, 0)) < 0x1000) \
goto ADDR; \ goto ADDR; \
} \ } \
} \ } \
else if (GET_CODE (X) == LO_SUM \ else if (GET_CODE (X) == LO_SUM) \
&& GET_CODE (XEXP (X, 0)) == REG \ { \
&& REG_OK_FOR_BASE_P (XEXP (X, 0)) \ register rtx op0 = XEXP (X, 0); \
&& CONSTANT_P (XEXP (X, 1))) \ register rtx op1 = XEXP (X, 1); \
goto ADDR; \ if (RTX_OK_FOR_BASE_P (op0) \
else if (GET_CODE (X) == LO_SUM \ && CONSTANT_P (op1)) \
&& GET_CODE (XEXP (X, 0)) == SUBREG \ goto ADDR; \
&& GET_CODE (SUBREG_REG (XEXP (X, 0))) == REG\ } \
&& REG_OK_FOR_BASE_P (SUBREG_REG (XEXP (X, 0)))\
&& CONSTANT_P (XEXP (X, 1))) \
goto ADDR; \
else if (GET_CODE (X) == CONST_INT && SMALL_INT (X)) \ else if (GET_CODE (X) == CONST_INT && SMALL_INT (X)) \
goto ADDR; \ goto ADDR; \
} }
......
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