+2006-05-10 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.c (arm_struct_value_rtx): Delete.
+ (TARGET_STRUCT_VALUE_RTX): Use the default definition.
+ (arm_init_cumulative_args): Always initialize nregs to zero.
+
2006-05-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/27532
static void aof_file_end (void);
static void aof_asm_init_sections (void);
#endif
-static rtx arm_struct_value_rtx (tree, int);
static void arm_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode,
tree, int *, int);
static bool arm_pass_by_reference (CUMULATIVE_ARGS *,
#undef TARGET_ARG_PARTIAL_BYTES
#define TARGET_ARG_PARTIAL_BYTES arm_arg_partial_bytes
-#undef TARGET_STRUCT_VALUE_RTX
-#define TARGET_STRUCT_VALUE_RTX arm_struct_value_rtx
-
#undef TARGET_SETUP_INCOMING_VARARGS
#define TARGET_SETUP_INCOMING_VARARGS arm_setup_incoming_varargs
tree fndecl ATTRIBUTE_UNUSED)
{
/* On the ARM, the offset starts at 0. */
- pcum->nregs = ((fntype && aggregate_value_p (TREE_TYPE (fntype), fntype)) ? 1 : 0);
+ pcum->nregs = 0;
pcum->iwmmxt_nregs = 0;
pcum->can_split = true;
return "";
}
-static rtx
-arm_struct_value_rtx (tree fntype ATTRIBUTE_UNUSED,
- int incoming ATTRIBUTE_UNUSED)
-{
-#if 0
- /* FIXME: The ARM backend has special code to handle structure
- returns, and will reserve its own hidden first argument. So
- if this macro is enabled a *second* hidden argument will be
- reserved, which will break binary compatibility with old
- toolchains and also thunk handling. One day this should be
- fixed. */
- return 0;
-#else
- /* Register in which address to store a structure value
- is passed to a function. */
- return gen_rtx_REG (Pmode, ARG_REGISTER (1));
-#endif
-}
-
/* Worker function for TARGET_SETUP_INCOMING_VARARGS.
On the ARM, PRETEND_SIZE is set in order to have the prologue push the last