diff options
Diffstat (limited to 'gcc/simplify-rtx.c')
-rw-r--r-- | gcc/simplify-rtx.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index 52a9250..212d3b9 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -2586,15 +2586,12 @@ simplify_subreg (outermode, op, innermode, byte) if (REG_P (op) && (! REG_FUNCTION_VALUE_P (op) || ! rtx_equal_function_value_matters) -#ifdef CLASS_CANNOT_CHANGE_MODE - && ! (CLASS_CANNOT_CHANGE_MODE_P (outermode, innermode) + && REGNO (op) < FIRST_PSEUDO_REGISTER +#ifdef CANNOT_CHANGE_MODE_CLASS + && ! (REG_CANNOT_CHANGE_MODE_P (REGNO (op), outermode, innermode) && GET_MODE_CLASS (innermode) != MODE_COMPLEX_INT - && GET_MODE_CLASS (innermode) != MODE_COMPLEX_FLOAT - && (TEST_HARD_REG_BIT - (reg_class_contents[(int) CLASS_CANNOT_CHANGE_MODE], - REGNO (op)))) + && GET_MODE_CLASS (innermode) != MODE_COMPLEX_FLOAT) #endif - && REGNO (op) < FIRST_PSEUDO_REGISTER && ((reload_completed && !frame_pointer_needed) || (REGNO (op) != FRAME_POINTER_REGNUM #if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM |