diff options
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index fcabed2e528..18a016ae041 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -737,12 +737,12 @@ gen_lowpart_common (mode, x) /* integrate.c can't handle parts of a return value register. */ && (! REG_FUNCTION_VALUE_P (x) || ! rtx_equal_function_value_matters) -#ifdef CLASS_CANNOT_CHANGE_SIZE - && ! (GET_MODE_SIZE (mode) != GET_MODE_SIZE (GET_MODE (x)) +#ifdef CLASS_CANNOT_CHANGE_MODE + && ! (CLASS_CANNOT_CHANGE_MODE_P (mode, GET_MODE (x)) && GET_MODE_CLASS (GET_MODE (x)) != MODE_COMPLEX_INT && GET_MODE_CLASS (GET_MODE (x)) != MODE_COMPLEX_FLOAT && (TEST_HARD_REG_BIT - (reg_class_contents[(int) CLASS_CANNOT_CHANGE_SIZE], + (reg_class_contents[(int) CLASS_CANNOT_CHANGE_MODE], REGNO (x)))) #endif /* We want to keep the stack, frame, and arg pointers |