(rs6000_function_value): Widen integral return value to mode based
on TARGET_32BIT, not word_mode.
* config/rs6000/rs6000.h (PROMOTE_MODE): Likewise.
+ (UNITS_PER_ARG): New.
+ (RS6000_ARG_SIZE): Use it.
2003-10-31 Gerald Pfeifer <gerald@pfeifer.com>
/* Define intermediate macro to compute the size (in registers) of an argument
for the RS/6000. */
+#define UNITS_PER_ARG (TARGET_32BIT ? 4 : 8)
+
#define RS6000_ARG_SIZE(MODE, TYPE) \
((MODE) != BLKmode \
- ? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD \
- : (int_size_in_bytes (TYPE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)
+ ? (GET_MODE_SIZE (MODE) + (UNITS_PER_ARG - 1)) / UNITS_PER_ARG \
+ : (int_size_in_bytes (TYPE) + (UNITS_PER_ARG - 1)) / UNITS_PER_ARG)
/* Initialize a variable CUM of type CUMULATIVE_ARGS
for a call to a function whose data type is FNTYPE.