diff options
Diffstat (limited to 'gcc/explow.c')
-rw-r--r-- | gcc/explow.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/explow.c b/gcc/explow.c index b87764b6180..99d7d98bc04 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -1584,17 +1584,20 @@ hard_function_value (valtype, func, outgoing) int outgoing ATTRIBUTE_UNUSED; { rtx val; + #ifdef FUNCTION_OUTGOING_VALUE if (outgoing) val = FUNCTION_OUTGOING_VALUE (valtype, func); else #endif val = FUNCTION_VALUE (valtype, func); + if (GET_CODE (val) == REG && GET_MODE (val) == BLKmode) { - int bytes = int_size_in_bytes (valtype); + unsigned HOST_WIDE_INT bytes = int_size_in_bytes (valtype); enum machine_mode tmpmode; + for (tmpmode = GET_CLASS_NARROWEST_MODE (MODE_INT); tmpmode != VOIDmode; tmpmode = GET_MODE_WIDER_MODE (tmpmode)) |