config/v850/v850.h (GO_IF_LEGITIMATE_ADDRESS): Tidy up formatting.

Add check to PLUS case to ensure that the offset is within an acceptable range.

config/v850/v850.md (casesi): Disable the generation of the switch pattern as
it is not being handled properly at the moment.

From-SVN: r104736
This commit is contained in:
Nick Clifton 2005-09-28 15:56:53 +00:00 committed by Nick Clifton
parent 9f4a5c9a63
commit 7d866c52c5
3 changed files with 18 additions and 5 deletions

View File

@ -1,5 +1,12 @@
2005-09-28 Nick Clifton <nickc@redhat.com>
* config/v850/v850.h (GO_IF_LEGITIMATE_ADDRESS): Tidy up
formatting. Add check to PLUS case to ensure that the offset is
within an acceptable range.
* config/v850/v850.md (casesi): Disable the generation of the
switch pattern as it is not being handled properly at the moment.
* config/v850/lib1funcs.asm (___ucmpdi2): Correct jump instruction
for when the high words are identical.

View File

@ -797,13 +797,14 @@ struct cum_arg { int nbytes; int anonymous_args; };
#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
do { \
if (RTX_OK_FOR_BASE_P (X)) goto ADDR; \
if (RTX_OK_FOR_BASE_P (X)) \
goto ADDR; \
if (CONSTANT_ADDRESS_P (X) \
&& (MODE == QImode || INTVAL (X) % 2 == 0) \
&& (GET_MODE_SIZE (MODE) <= 4 || INTVAL (X) % 4 == 0)) \
goto ADDR; \
if (GET_CODE (X) == LO_SUM \
&& GET_CODE (XEXP (X, 0)) == REG \
&& REG_P (XEXP (X, 0)) \
&& REG_OK_FOR_BASE_P (XEXP (X, 0)) \
&& CONSTANT_P (XEXP (X, 1)) \
&& (GET_CODE (XEXP (X, 1)) != CONST_INT \
@ -815,9 +816,12 @@ do { \
&& (GET_MODE_SIZE (MODE) <= GET_MODE_SIZE (word_mode))) \
goto ADDR; \
if (GET_CODE (X) == PLUS \
&& RTX_OK_FOR_BASE_P (XEXP (X, 0)) \
&& CONSTANT_ADDRESS_P (XEXP (X, 1)) \
&& (MODE == QImode || INTVAL (XEXP (X, 1)) % 2 == 0) \
&& RTX_OK_FOR_BASE_P (XEXP (X, 0))) goto ADDR; \
&& ((MODE == QImode || INTVAL (XEXP (X, 1)) % 2 == 0) \
&& CONST_OK_FOR_K (INTVAL (XEXP (X, 1)) \
+ (GET_MODE_NUNITS (MODE) * UNITS_PER_WORD)))) \
goto ADDR; \
} while (0)

View File

@ -1309,7 +1309,9 @@
/* Branch to the default label if out of range of the table. */
emit_jump_insn (gen_bgtu (operands[4]));
if (! TARGET_BIG_SWITCH && TARGET_V850E)
/* Disabled because the switch pattern is not being recognised
properly at the moment. eg. compiling vfscanf.c in newlib. */
if (0 && ! TARGET_BIG_SWITCH && TARGET_V850E)
{
emit_jump_insn (gen_switch (reg, operands[3]));
DONE;