Just having TARGET_DOUBLE_FLOAT, instead of (TARGET_DOUBLE_FLOAT &&
mode == DFmode) should be the same as previous behavior.
Other tests have explicit checks for TFmode, which are missing.
This would probably be better:
@@ -5200,7 +5250,9 @@
#define USE_FP_FOR_ARG_P(CUM,MODE,TYPE) \
(SCALAR_FLOAT_MODE_P (MODE) \
&& (CUM)->fregno <= FP_ARG_MAX_REG \
- && TARGET_HARD_FLOAT && TARGET_FPRS)
+ && TARGET_HARD_FLOAT && TARGET_FPRS \
+ && ((TARGET_DOUBLE_FLOAT && ((MODE) == DFmode || (MODE) == (TFmode))\
+ || (TARGET_SINGLE_FLOAT && (MODE) == SFmode)))
@@ -5745,7 +5797,9 @@
cum->words = align_words + n_words;
if (SCALAR_FLOAT_MODE_P (mode)
- && TARGET_HARD_FLOAT && TARGET_FPRS)
+ && TARGET_HARD_FLOAT && TARGET_FPRS
+ && ((TARGET_DOUBLE_FLOAT && (mode == DFmode || mode == TFmode))
+ || (TARGET_SINGLE_FLOAT && mode == SFmode)))