diff options
Diffstat (limited to 'gcc/config/v850')
-rw-r--r-- | gcc/config/v850/v850.c | 16 | ||||
-rw-r--r-- | gcc/config/v850/v850.h | 11 |
2 files changed, 16 insertions, 11 deletions
diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c index b0b9388a0ab..86509e0ac4c 100644 --- a/gcc/config/v850/v850.c +++ b/gcc/config/v850/v850.c @@ -3117,6 +3117,19 @@ v850_issue_rate (void) { return (TARGET_V850E2_ALL? 2 : 1); } + +/* Implement TARGET_LEGITIMATE_CONSTANT_P. */ + +static bool +v850_legitimate_constant_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx x) +{ + return (GET_CODE (x) == CONST_DOUBLE + || !(GET_CODE (x) == CONST + && GET_CODE (XEXP (x, 0)) == PLUS + && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF + && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT + && !CONST_OK_FOR_K (INTVAL (XEXP (XEXP (x, 0), 1))))); +} /* V850 specific attributes. */ @@ -3234,6 +3247,9 @@ static const struct attribute_spec v850_attribute_table[] = #undef TARGET_OPTION_OPTIMIZATION_TABLE #define TARGET_OPTION_OPTIMIZATION_TABLE v850_option_optimization_table +#undef TARGET_LEGITIMATE_CONSTANT_P +#define TARGET_LEGITIMATE_CONSTANT_P v850_legitimate_constant_p + struct gcc_target targetm = TARGET_INITIALIZER; #include "gt-v850.h" diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h index 1e45686e54f..5079936f416 100644 --- a/gcc/config/v850/v850.h +++ b/gcc/config/v850/v850.h @@ -633,17 +633,6 @@ do { \ } while (0) -/* Nonzero if the constant value X is a legitimate general operand. - It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE. */ - -#define LEGITIMATE_CONSTANT_P(X) \ - (GET_CODE (X) == CONST_DOUBLE \ - || !(GET_CODE (X) == CONST \ - && GET_CODE (XEXP (X, 0)) == PLUS \ - && GET_CODE (XEXP (XEXP (X, 0), 0)) == SYMBOL_REF \ - && GET_CODE (XEXP (XEXP (X, 0), 1)) == CONST_INT \ - && ! CONST_OK_FOR_K (INTVAL (XEXP (XEXP (X, 0), 1))))) - /* Given a comparison code (EQ, NE, etc.) and the first operand of a COMPARE, return the mode to be used for the comparison. |