Commit 2c7ee1a6 by Jeff Law

calls.c (expand_call): Remove current_call_is_indirect nonsense.

	* calls.c (expand_call): Remove current_call_is_indirect nonsense.
	Add additional argument to INIT_CUMULATIVE_ARGS.
	(emit_library_call): Likewise.
	(emit_library_call_value): Likewise.
	* expr.c (expand_builtin): Likewise.
	* function.c (assign_parms): Likewise.
	* cp/method.c (emit_thunk): Likewise.
	* config/pa/pa.h (hppa_args): New field "indirect".
	(INIT_CUMULATIVE_ARGS): Initialize "indirect" field.
	(FUNCTION_ARG): Check "indirect" field, rather than
	"current_call_is_indirect".
	* All other backends updated with new argument to
	INIT_CUMULATIVE_ARGS

From-SVN: r11641
parent c4d98c84
...@@ -517,7 +517,7 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA ...@@ -517,7 +517,7 @@ enum reg_class { NO_REGS, R2, R0_1, INDEX_REGS, BASE_REGS, ALL_REGS, LIM_REG_CLA
For 1750A, the offset starts at 0. */ For 1750A, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) ((CUM) = 0) #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
of mode MODE and data type TYPE. of mode MODE and data type TYPE.
......
...@@ -780,7 +780,7 @@ extern struct rtx_def *a29k_get_reloaded_address (); ...@@ -780,7 +780,7 @@ extern struct rtx_def *a29k_get_reloaded_address ();
for a call to a function whose data type is FNTYPE. for a call to a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. */ For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) (CUM) = 0 #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) (CUM) = 0
/* Same, but called for incoming args. /* Same, but called for incoming args.
......
...@@ -872,7 +872,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS, ...@@ -872,7 +872,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS,
for a call to a function whose data type is FNTYPE. for a call to a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. */ For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) (CUM) = 0 #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) (CUM) = 0
/* Define intermediate macro to compute the size (in registers) of an argument /* Define intermediate macro to compute the size (in registers) of an argument
for the Alpha. */ for the Alpha. */
......
...@@ -808,7 +808,7 @@ enum reg_class ...@@ -808,7 +808,7 @@ enum reg_class
for a call to a function whose data type is FNTYPE. for a call to a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. For a library call, FNTYPE is 0.
On the ARM, the offset starts at 0. */ On the ARM, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT) \
((CUM) = (((FNTYPE) && aggregate_value_p (TREE_TYPE ((FNTYPE)))) ? 4 : 0)) ((CUM) = (((FNTYPE) && aggregate_value_p (TREE_TYPE ((FNTYPE)))) ? 4 : 0))
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -461,7 +461,7 @@ struct _clipper_cum_args { int num; int size; }; ...@@ -461,7 +461,7 @@ struct _clipper_cum_args { int num; int size; };
clipper passes the address of a struct in r0, set num = 1 in this case */ clipper passes the address of a struct in r0, set num = 1 in this case */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM).num = ((FNTYPE) != 0 && aggregate_value_p (TREE_TYPE (FNTYPE))), \ ((CUM).num = ((FNTYPE) != 0 && aggregate_value_p (TREE_TYPE (FNTYPE))), \
(CUM).size = 0) (CUM).size = 0)
......
...@@ -791,7 +791,7 @@ enum reg_class { ...@@ -791,7 +791,7 @@ enum reg_class {
for a call to a function whose data type is FNTYPE. for a call to a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. */ For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -1192,7 +1192,7 @@ extern struct dsp16xx_frame_info current_frame_info; ...@@ -1192,7 +1192,7 @@ extern struct dsp16xx_frame_info current_frame_info;
/* Initialize a variable CUM of type CUMULATIVE_ARGS /* Initialize a variable CUM of type CUMULATIVE_ARGS
for a call to a function whose data type is FNTYPE. for a call to a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. */ For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) ((CUM) = 0) #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
of mode MODE and data type TYPE. of mode MODE and data type TYPE.
......
...@@ -360,7 +360,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, ALL_REGS, LIM_REG_CLASSES }; ...@@ -360,7 +360,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, ALL_REGS, LIM_REG_CLASSES };
On the vax, the offset starts at 0. */ On the vax, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,x) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,x,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -503,7 +503,7 @@ extern enum reg_class regno_reg_class[]; ...@@ -503,7 +503,7 @@ extern enum reg_class regno_reg_class[];
On the Alliant, the offset starts at 0. */ On the Alliant, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -516,7 +516,7 @@ extern enum reg_class regno_reg_class[]; ...@@ -516,7 +516,7 @@ extern enum reg_class regno_reg_class[];
On the Gmicro, the offset starts at 0. */ On the Gmicro, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -579,7 +579,7 @@ struct cum_arg { int nbytes; struct rtx_def * libcall; }; ...@@ -579,7 +579,7 @@ struct cum_arg { int nbytes; struct rtx_def * libcall; };
On the H8/300, the offset starts at 0. */ On the H8/300, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM).nbytes = 0, (CUM).libcall = LIBNAME) ((CUM).nbytes = 0, (CUM).libcall = LIBNAME)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -431,7 +431,7 @@ enum reg_class ...@@ -431,7 +431,7 @@ enum reg_class
a function whose data type is FNTYPE. a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. */ For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME) ((CUM) = 0) #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT) ((CUM) = 0)
/* Update the data in CUM to advance over an argument of mode MODE and /* Update the data in CUM to advance over an argument of mode MODE and
data type TYPE. (TYPE is null for libcalls where that information data type TYPE. (TYPE is null for libcalls where that information
......
...@@ -903,7 +903,7 @@ typedef struct i386_args { ...@@ -903,7 +903,7 @@ typedef struct i386_args {
for a call to a function whose data type is FNTYPE. for a call to a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. */ For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
(init_cumulative_args (&CUM, FNTYPE, LIBNAME)) (init_cumulative_args (&CUM, FNTYPE, LIBNAME))
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -472,7 +472,7 @@ struct cumulative_args { int ints, floats; }; ...@@ -472,7 +472,7 @@ struct cumulative_args { int ints, floats; };
when the function gets a structure-value-address as an when the function gets a structure-value-address as an
invisible first argument. */ invisible first argument. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM).ints = ((FNTYPE) != 0 && aggregate_value_p (TREE_TYPE ((FNTYPE))) \ ((CUM).ints = ((FNTYPE) != 0 && aggregate_value_p (TREE_TYPE ((FNTYPE))) \
? 4 : 0), \ ? 4 : 0), \
(CUM).floats = 0) (CUM).floats = 0)
......
...@@ -803,7 +803,7 @@ struct cum_args { int ca_nregparms; int ca_nstackparms; }; ...@@ -803,7 +803,7 @@ struct cum_args { int ca_nregparms; int ca_nstackparms; };
On 80960, the offset always starts at 0; the first parm reg is g0. */ On 80960, the offset always starts at 0; the first parm reg is g0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM).ca_nregparms = 0, (CUM).ca_nstackparms = 0) ((CUM).ca_nregparms = 0, (CUM).ca_nstackparms = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -843,7 +843,7 @@ extern enum reg_class regno_reg_class[]; ...@@ -843,7 +843,7 @@ extern enum reg_class regno_reg_class[];
On the m68k, the offset starts at 0. */ On the m68k, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -762,7 +762,7 @@ struct sysV68_cumulative_args ...@@ -762,7 +762,7 @@ struct sysV68_cumulative_args
#define CUMULATIVE_ARGS struct sysV68_cumulative_args #define CUMULATIVE_ARGS struct sysV68_cumulative_args
#undef INIT_CUMULATIVE_ARGS #undef INIT_CUMULATIVE_ARGS
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
do {(CUM).offset = 0;\ do {(CUM).offset = 0;\
(CUM).libcall = (LIBNAME) && (*XSTR((LIBNAME), 0) == '*');} while(0) (CUM).libcall = (LIBNAME) && (*XSTR((LIBNAME), 0) == '*');} while(0)
......
...@@ -199,13 +199,13 @@ extern char * reg_names[]; ...@@ -199,13 +199,13 @@ extern char * reg_names[];
Redefined in sysv4.h, and luna.h. */ Redefined in sysv4.h, and luna.h. */
#define VERSION_INFO1 "88open OCS/BCS, " #define VERSION_INFO1 "88open OCS/BCS, "
#ifndef VERSION_INFO2 #ifndef VERSION_INFO2
#define VERSION_INFO2 "$Revision: 1.66 $" #define VERSION_INFO2 "$Revision: 1.67 $"
#endif #endif
#ifndef VERSION_STRING #ifndef VERSION_STRING
#define VERSION_STRING version_string #define VERSION_STRING version_string
#ifdef __STDC__ #ifdef __STDC__
#define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.66 $ " __DATE__ #define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.67 $ " __DATE__
#else #else
#define TM_RCS_ID "$What: <@(#) m88k.h,v 1.1.1.2.2.2> $" #define TM_RCS_ID "$What: <@(#) m88k.h,v 1.1.1.2.2.2> $"
#endif /* __STDC__ */ #endif /* __STDC__ */
...@@ -1046,7 +1046,7 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS, ...@@ -1046,7 +1046,7 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
/* Initialize a variable CUM of type CUMULATIVE_ARGS for a call to a /* Initialize a variable CUM of type CUMULATIVE_ARGS for a call to a
function whose data type is FNTYPE. For a library call, FNTYPE is 0. */ function whose data type is FNTYPE. For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) ((CUM) = 0) #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) ((CUM) = 0)
/* A C statement (sans semicolon) to update the summarizer variable /* A C statement (sans semicolon) to update the summarizer variable
CUM to advance past an argument in the argument list. The values CUM to advance past an argument in the argument list. The values
......
...@@ -2002,7 +2002,7 @@ typedef struct mips_args { ...@@ -2002,7 +2002,7 @@ typedef struct mips_args {
*/ */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
init_cumulative_args (&CUM, FNTYPE, LIBNAME) \ init_cumulative_args (&CUM, FNTYPE, LIBNAME) \
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -467,7 +467,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, GEN_AND_FP_REGS, ...@@ -467,7 +467,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, GEN_AND_FP_REGS,
On the ns32k, the offset starts at 0. */ On the ns32k, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -863,7 +863,7 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FP_REGS, GENERAL_OR_FP_REGS, ...@@ -863,7 +863,7 @@ enum reg_class { NO_REGS, R1_REGS, GENERAL_REGS, FP_REGS, GENERAL_OR_FP_REGS,
if any, which holds the structure-value-address). if any, which holds the structure-value-address).
Thus 4 or more means all following args should go on the stack. */ Thus 4 or more means all following args should go on the stack. */
struct hppa_args {int words, nargs_prototype; }; struct hppa_args {int words, nargs_prototype, indirect; };
#define CUMULATIVE_ARGS struct hppa_args #define CUMULATIVE_ARGS struct hppa_args
...@@ -871,8 +871,9 @@ struct hppa_args {int words, nargs_prototype; }; ...@@ -871,8 +871,9 @@ struct hppa_args {int words, nargs_prototype; };
for a call to a function whose data type is FNTYPE. for a call to a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. */ For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
(CUM).words = 0, \ (CUM).words = 0, \
(CUM).indirect = INDIRECT, \
(CUM).nargs_prototype = (FNTYPE && TYPE_ARG_TYPES (FNTYPE) \ (CUM).nargs_prototype = (FNTYPE && TYPE_ARG_TYPES (FNTYPE) \
? (list_length (TYPE_ARG_TYPES (FNTYPE)) - 1 \ ? (list_length (TYPE_ARG_TYPES (FNTYPE)) - 1 \
+ (TYPE_MODE (TREE_TYPE (FNTYPE)) == BLKmode \ + (TYPE_MODE (TREE_TYPE (FNTYPE)) == BLKmode \
...@@ -963,13 +964,13 @@ struct hppa_args {int words, nargs_prototype; }; ...@@ -963,13 +964,13 @@ struct hppa_args {int words, nargs_prototype; };
|| (CUM).nargs_prototype > 0) \ || (CUM).nargs_prototype > 0) \
? gen_rtx (REG, (MODE), \ ? gen_rtx (REG, (MODE), \
(FUNCTION_ARG_SIZE ((MODE), (TYPE)) > 1 \ (FUNCTION_ARG_SIZE ((MODE), (TYPE)) > 1 \
? (((!current_call_is_indirect \ ? (((!(CUM).indirect \
|| TARGET_PORTABLE_RUNTIME) \ || TARGET_PORTABLE_RUNTIME) \
&& (MODE) == DFmode \ && (MODE) == DFmode \
&& ! TARGET_SOFT_FLOAT) \ && ! TARGET_SOFT_FLOAT) \
? ((CUM).words ? 38 : 34) \ ? ((CUM).words ? 38 : 34) \
: ((CUM).words ? 23 : 25)) \ : ((CUM).words ? 23 : 25)) \
: (((!current_call_is_indirect \ : (((!(CUM).indirect \
|| TARGET_PORTABLE_RUNTIME) \ || TARGET_PORTABLE_RUNTIME) \
&& (MODE) == SFmode \ && (MODE) == SFmode \
&& ! TARGET_SOFT_FLOAT) \ && ! TARGET_SOFT_FLOAT) \
......
...@@ -598,7 +598,7 @@ maybe ac0 ? - as option someday! */ ...@@ -598,7 +598,7 @@ maybe ac0 ? - as option someday! */
when the function gets a structure-value-address as an when the function gets a structure-value-address as an
invisible first argument. */ invisible first argument. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -629,7 +629,7 @@ extern int inner_param_safe_helper(); ...@@ -629,7 +629,7 @@ extern int inner_param_safe_helper();
for a call to a function whose data type is FNTYPE. for a call to a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. */ For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = (FNTYPE && !flag_pcc_struct_return \ ((CUM) = (FNTYPE && !flag_pcc_struct_return \
&& aggregate_value_p (TREE_TYPE (FNTYPE)))) && aggregate_value_p (TREE_TYPE (FNTYPE))))
......
...@@ -591,7 +591,7 @@ struct rt_cargs {int gregs, fregs; }; ...@@ -591,7 +591,7 @@ struct rt_cargs {int gregs, fregs; };
when the function gets a structure-value-address as an when the function gets a structure-value-address as an
invisible first argument. */ invisible first argument. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
(CUM).gregs = 0, \ (CUM).gregs = 0, \
(CUM).fregs = 0 (CUM).fregs = 0
......
...@@ -1310,7 +1310,7 @@ typedef struct rs6000_args ...@@ -1310,7 +1310,7 @@ typedef struct rs6000_args
for a call to a function whose data type is FNTYPE. for a call to a function whose data type is FNTYPE.
For a library call, FNTYPE is 0. */ For a library call, FNTYPE is 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
init_cumulative_args (&CUM, FNTYPE, LIBNAME, FALSE) init_cumulative_args (&CUM, FNTYPE, LIBNAME, FALSE)
/* Similar, but when scanning the definition of a procedure. We always /* Similar, but when scanning the definition of a procedure. We always
......
...@@ -708,7 +708,7 @@ struct sh_args { ...@@ -708,7 +708,7 @@ struct sh_args {
On SH, the offset always starts at 0: the first parm reg is always On SH, the offset always starts at 0: the first parm reg is always
the same reg. */ the same reg. */
#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT) \
do { \ do { \
(CUM).arg_count[(int) SH_ARG_INT] = 0; \ (CUM).arg_count[(int) SH_ARG_INT] = 0; \
(CUM).arg_count[(int) SH_ARG_FLOAT] = 0; \ (CUM).arg_count[(int) SH_ARG_FLOAT] = 0; \
......
...@@ -1460,7 +1460,7 @@ struct sparc_args { ...@@ -1460,7 +1460,7 @@ struct sparc_args {
#if SPARC_ARCH64 #if SPARC_ARCH64
extern int sparc_arg_count,sparc_n_named_args; extern int sparc_arg_count,sparc_n_named_args;
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
do { \ do { \
(CUM).arg_count[(int) SPARC_ARG_INT] = 0; \ (CUM).arg_count[(int) SPARC_ARG_INT] = 0; \
(CUM).arg_count[(int) SPARC_ARG_FLOAT] = 0; \ (CUM).arg_count[(int) SPARC_ARG_FLOAT] = 0; \
...@@ -1476,7 +1476,7 @@ extern int sparc_arg_count,sparc_n_named_args; ...@@ -1476,7 +1476,7 @@ extern int sparc_arg_count,sparc_n_named_args;
: 10000); \ : 10000); \
} while (0) } while (0)
#else #else
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) ((CUM) = 0) #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) ((CUM) = 0)
#endif #endif
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -415,7 +415,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES }; ...@@ -415,7 +415,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES };
when the function gets a structure-value-address as an when the function gets a structure-value-address as an
invisible first argument. */ invisible first argument. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = ((FNTYPE) != 0 && aggregate_value_p (TREE_TYPE ((FNTYPE))))) ((CUM) = ((FNTYPE) != 0 && aggregate_value_p (TREE_TYPE ((FNTYPE)))))
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -356,7 +356,7 @@ enum reg_class {NO_REGS,GENERAL_REGS,FPP_REG,ALL_REGS,LIM_REG_CLASSES}; ...@@ -356,7 +356,7 @@ enum reg_class {NO_REGS,GENERAL_REGS,FPP_REG,ALL_REGS,LIM_REG_CLASSES};
/* we just set CUM to 0 before the FUNCTION_ARG call. No matter what */ /* we just set CUM to 0 before the FUNCTION_ARG call. No matter what */
/* we make it, FUNCTION_ARG will return 0 anyway */ /* we make it, FUNCTION_ARG will return 0 anyway */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* all modes push their size rounded to the nearest word boundary */ /* all modes push their size rounded to the nearest word boundary */
......
...@@ -411,7 +411,7 @@ gen_rtx (PLUS, Pmode, frame, gen_rtx (CONST_INT, VOIDmode, 12)) ...@@ -411,7 +411,7 @@ gen_rtx (PLUS, Pmode, frame, gen_rtx (CONST_INT, VOIDmode, 12))
On the vax, the offset starts at 0. */ On the vax, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -360,7 +360,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, ...@@ -360,7 +360,7 @@ enum reg_class { NO_REGS, GENERAL_REGS,
On the we32k, the offset starts at 0. */ On the we32k, the offset starts at 0. */
#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \
((CUM) = 0) ((CUM) = 0)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
......
...@@ -1880,7 +1880,6 @@ emit_thunk (thunk_fndecl) ...@@ -1880,7 +1880,6 @@ emit_thunk (thunk_fndecl)
int delta = THUNK_DELTA (thunk_fndecl); int delta = THUNK_DELTA (thunk_fndecl);
int tem; int tem;
int failure = 0; int failure = 0;
int current_call_is_indirect = 0; /* needed for HPPA FUNCTION_ARG */
/* Used to remember which regs we need to emit a USE rtx for. */ /* Used to remember which regs we need to emit a USE rtx for. */
rtx need_use[FIRST_PSEUDO_REGISTER]; rtx need_use[FIRST_PSEUDO_REGISTER];
...@@ -1913,7 +1912,7 @@ emit_thunk (thunk_fndecl) ...@@ -1913,7 +1912,7 @@ emit_thunk (thunk_fndecl)
expand_start_bindings (1); expand_start_bindings (1);
/* Start updating where the next arg would go. */ /* Start updating where the next arg would go. */
INIT_CUMULATIVE_ARGS (args_so_far, TREE_TYPE (function), NULL_RTX); INIT_CUMULATIVE_ARGS (args_so_far, TREE_TYPE (function), NULL_RTX, 0);
stack_args_size.constant = 0; stack_args_size.constant = 0;
stack_args_size.var = 0; stack_args_size.var = 0;
/* SETUP for possible structure return address FIXME */ /* SETUP for possible structure return address FIXME */
......
...@@ -8631,7 +8631,7 @@ expand_builtin (exp, target, subtarget, mode, ignore) ...@@ -8631,7 +8631,7 @@ expand_builtin (exp, target, subtarget, mode, ignore)
op0 = memory_address (FUNCTION_MODE, op0); op0 = memory_address (FUNCTION_MODE, op0);
INIT_CUMULATIVE_ARGS (args_so_far, NULL_TREE, INIT_CUMULATIVE_ARGS (args_so_far, NULL_TREE,
gen_rtx (SYMBOL_REF, Pmode, "__dummy")); gen_rtx (SYMBOL_REF, Pmode, "__dummy"), 1);
next_arg_reg = FUNCTION_ARG (args_so_far, VOIDmode, void_type_node, 1); next_arg_reg = FUNCTION_ARG (args_so_far, VOIDmode, void_type_node, 1);
#ifndef ACCUMULATE_OUTGOING_ARGS #ifndef ACCUMULATE_OUTGOING_ARGS
......
...@@ -3235,9 +3235,6 @@ assign_parms (fndecl, second_time) ...@@ -3235,9 +3235,6 @@ assign_parms (fndecl, second_time)
int nparmregs = list_length (fnargs) + LAST_VIRTUAL_REGISTER + 1; int nparmregs = list_length (fnargs) + LAST_VIRTUAL_REGISTER + 1;
int varargs_setup = 0; int varargs_setup = 0;
rtx conversion_insns = 0; rtx conversion_insns = 0;
/* FUNCTION_ARG may look at this variable. Since this is not
expanding a call it will always be zero in this function. */
int current_call_is_indirect = 0;
/* Nonzero if the last arg is named `__builtin_va_alist', /* Nonzero if the last arg is named `__builtin_va_alist',
which is used on some machines for old-fashioned non-ANSI varargs.h; which is used on some machines for old-fashioned non-ANSI varargs.h;
...@@ -3299,7 +3296,7 @@ assign_parms (fndecl, second_time) ...@@ -3299,7 +3296,7 @@ assign_parms (fndecl, second_time)
#ifdef INIT_CUMULATIVE_INCOMING_ARGS #ifdef INIT_CUMULATIVE_INCOMING_ARGS
INIT_CUMULATIVE_INCOMING_ARGS (args_so_far, fntype, NULL_RTX); INIT_CUMULATIVE_INCOMING_ARGS (args_so_far, fntype, NULL_RTX);
#else #else
INIT_CUMULATIVE_ARGS (args_so_far, fntype, NULL_RTX); INIT_CUMULATIVE_ARGS (args_so_far, fntype, NULL_RTX, 0);
#endif #endif
/* We haven't yet found an argument that we must push and pretend the /* We haven't yet found an argument that we must push and pretend the
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment