diff options
Diffstat (limited to 'gcc/config/lm32/lm32.c')
-rw-r--r-- | gcc/config/lm32/lm32.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/config/lm32/lm32.c b/gcc/config/lm32/lm32.c index 536944f..2dcff75 100644 --- a/gcc/config/lm32/lm32.c +++ b/gcc/config/lm32/lm32.c @@ -78,6 +78,7 @@ static void lm32_function_arg_advance (cumulative_args_t cum, machine_mode mode, const_tree type, bool named); static bool lm32_hard_regno_mode_ok (unsigned int, machine_mode); +static bool lm32_modes_tieable_p (machine_mode, machine_mode); #undef TARGET_OPTION_OVERRIDE #define TARGET_OPTION_OVERRIDE lm32_option_override @@ -109,6 +110,8 @@ static bool lm32_hard_regno_mode_ok (unsigned int, machine_mode); #define TARGET_LEGITIMATE_ADDRESS_P lm32_legitimate_address_p #undef TARGET_HARD_REGNO_MODE_OK #define TARGET_HARD_REGNO_MODE_OK lm32_hard_regno_mode_ok +#undef TARGET_MODES_TIEABLE_P +#define TARGET_MODES_TIEABLE_P lm32_modes_tieable_p struct gcc_target targetm = TARGET_INITIALIZER; @@ -1232,3 +1235,14 @@ lm32_hard_regno_mode_ok (unsigned int regno, machine_mode) { return G_REG_P (regno); } + +/* Implement TARGET_MODES_TIEABLE_P. */ + +static bool +lm32_modes_tieable_p (machine_mode mode1, machine_mode mode2) +{ + return (GET_MODE_CLASS (mode1) == MODE_INT + && GET_MODE_CLASS (mode2) == MODE_INT + && GET_MODE_SIZE (mode1) <= UNITS_PER_WORD + && GET_MODE_SIZE (mode2) <= UNITS_PER_WORD); +} |