From 2c7ee1a641d927dc3f45170f0ff4ecd6dd8f31c7 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 29 Mar 1996 07:37:11 -0700 Subject: [PATCH] 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 --- gcc/config/1750a/1750a.h | 2 +- gcc/config/a29k/a29k.h | 2 +- gcc/config/alpha/alpha.h | 2 +- gcc/config/arm/arm.h | 2 +- gcc/config/clipper/clipper.h | 2 +- gcc/config/convex/convex.h | 2 +- gcc/config/dsp16xx/dsp16xx.h | 2 +- gcc/config/elxsi/elxsi.h | 2 +- gcc/config/fx80/fx80.h | 2 +- gcc/config/gmicro/gmicro.h | 2 +- gcc/config/h8300/h8300.h | 2 +- gcc/config/i370/i370.h | 2 +- gcc/config/i386/i386.h | 2 +- gcc/config/i860/i860.h | 2 +- gcc/config/i960/i960.h | 2 +- gcc/config/m68k/m68k.h | 2 +- gcc/config/m68k/mot3300.h | 2 +- gcc/config/m88k/m88k.h | 6 +++--- gcc/config/mips/mips.h | 2 +- gcc/config/ns32k/ns32k.h | 2 +- gcc/config/pa/pa.h | 9 +++++---- gcc/config/pdp11/pdp11.h | 2 +- gcc/config/pyr/pyr.h | 2 +- gcc/config/romp/romp.h | 2 +- gcc/config/rs6000/rs6000.h | 2 +- gcc/config/sh/sh.h | 2 +- gcc/config/sparc/sparc.h | 4 ++-- gcc/config/spur/spur.h | 2 +- gcc/config/tahoe/tahoe.h | 2 +- gcc/config/vax/vax.h | 2 +- gcc/config/we32k/we32k.h | 2 +- gcc/cp/method.c | 3 +-- gcc/expr.c | 2 +- gcc/function.c | 5 +---- 34 files changed, 41 insertions(+), 44 deletions(-) diff --git a/gcc/config/1750a/1750a.h b/gcc/config/1750a/1750a.h index 15d167e99fa..364da8eb7ca 100644 --- a/gcc/config/1750a/1750a.h +++ b/gcc/config/1750a/1750a.h @@ -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. */ -#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 data type TYPE. diff --git a/gcc/config/a29k/a29k.h b/gcc/config/a29k/a29k.h index ce9fcff14d9..b70e13de329 100644 --- a/gcc/config/a29k/a29k.h +++ b/gcc/config/a29k/a29k.h @@ -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 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. diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index 3fd2fb7de37..7084661467f 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -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 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 for the Alpha. */ diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 575f5f0ff79..e8da9573547 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -808,7 +808,7 @@ enum reg_class for a call to a function whose data type is FNTYPE. For a library call, FNTYPE is 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)) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/clipper/clipper.h b/gcc/config/clipper/clipper.h index 372c33c4997..9600df34177 100644 --- a/gcc/config/clipper/clipper.h +++ b/gcc/config/clipper/clipper.h @@ -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 */ -#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).size = 0) diff --git a/gcc/config/convex/convex.h b/gcc/config/convex/convex.h index 0548f0f1764..9e4f8d9b082 100644 --- a/gcc/config/convex/convex.h +++ b/gcc/config/convex/convex.h @@ -791,7 +791,7 @@ enum reg_class { for a call to a function whose data type is FNTYPE. For a library call, FNTYPE is 0. */ -#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ +#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \ ((CUM) = 0) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/dsp16xx/dsp16xx.h b/gcc/config/dsp16xx/dsp16xx.h index 25215c8bf0c..6590823e819 100644 --- a/gcc/config/dsp16xx/dsp16xx.h +++ b/gcc/config/dsp16xx/dsp16xx.h @@ -1192,7 +1192,7 @@ extern struct dsp16xx_frame_info current_frame_info; /* 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. */ -#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 data type TYPE. diff --git a/gcc/config/elxsi/elxsi.h b/gcc/config/elxsi/elxsi.h index a6955c13704..30cab54b0e9 100644 --- a/gcc/config/elxsi/elxsi.h +++ b/gcc/config/elxsi/elxsi.h @@ -360,7 +360,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, ALL_REGS, LIM_REG_CLASSES }; 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) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/fx80/fx80.h b/gcc/config/fx80/fx80.h index 82797fbb402..59a31084dd6 100644 --- a/gcc/config/fx80/fx80.h +++ b/gcc/config/fx80/fx80.h @@ -503,7 +503,7 @@ extern enum reg_class regno_reg_class[]; 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) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/gmicro/gmicro.h b/gcc/config/gmicro/gmicro.h index 7ee92571bba..8b18bb09547 100644 --- a/gcc/config/gmicro/gmicro.h +++ b/gcc/config/gmicro/gmicro.h @@ -516,7 +516,7 @@ extern enum reg_class regno_reg_class[]; 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) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h index 0babf4ac74a..b1a44a79280 100644 --- a/gcc/config/h8300/h8300.h +++ b/gcc/config/h8300/h8300.h @@ -579,7 +579,7 @@ struct cum_arg { int nbytes; struct rtx_def * libcall; }; 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) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/i370/i370.h b/gcc/config/i370/i370.h index 3a660a75575..e728de124c1 100644 --- a/gcc/config/i370/i370.h +++ b/gcc/config/i370/i370.h @@ -431,7 +431,7 @@ enum reg_class a 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) /* 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 diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 507671a86bd..3a419f782aa 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -903,7 +903,7 @@ typedef struct i386_args { for a call to a function whose data type is FNTYPE. 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)) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/i860/i860.h b/gcc/config/i860/i860.h index d182b860da1..eb8baf5b61f 100644 --- a/gcc/config/i860/i860.h +++ b/gcc/config/i860/i860.h @@ -472,7 +472,7 @@ struct cumulative_args { int ints, floats; }; when the function gets a structure-value-address as an 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))) \ ? 4 : 0), \ (CUM).floats = 0) diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h index 655a188cb37..98657ba3ccc 100644 --- a/gcc/config/i960/i960.h +++ b/gcc/config/i960/i960.h @@ -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. */ -#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ +#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \ ((CUM).ca_nregparms = 0, (CUM).ca_nstackparms = 0) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h index a093b9f61fb..2c113303270 100644 --- a/gcc/config/m68k/m68k.h +++ b/gcc/config/m68k/m68k.h @@ -843,7 +843,7 @@ extern enum reg_class regno_reg_class[]; 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) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/m68k/mot3300.h b/gcc/config/m68k/mot3300.h index 8637c6d5762..126d8eab118 100644 --- a/gcc/config/m68k/mot3300.h +++ b/gcc/config/m68k/mot3300.h @@ -762,7 +762,7 @@ struct sysV68_cumulative_args #define CUMULATIVE_ARGS struct sysV68_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;\ (CUM).libcall = (LIBNAME) && (*XSTR((LIBNAME), 0) == '*');} while(0) diff --git a/gcc/config/m88k/m88k.h b/gcc/config/m88k/m88k.h index 1fb20dbb9c4..a6d5525f2d5 100644 --- a/gcc/config/m88k/m88k.h +++ b/gcc/config/m88k/m88k.h @@ -199,13 +199,13 @@ extern char * reg_names[]; Redefined in sysv4.h, and luna.h. */ #define VERSION_INFO1 "88open OCS/BCS, " #ifndef VERSION_INFO2 -#define VERSION_INFO2 "$Revision: 1.66 $" +#define VERSION_INFO2 "$Revision: 1.67 $" #endif #ifndef VERSION_STRING #define VERSION_STRING version_string #ifdef __STDC__ -#define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.66 $ " __DATE__ +#define TM_RCS_ID "@(#)" __FILE__ " $Revision: 1.67 $ " __DATE__ #else #define TM_RCS_ID "$What: <@(#) m88k.h,v 1.1.1.2.2.2> $" #endif /* __STDC__ */ @@ -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 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 CUM to advance past an argument in the argument list. The values diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index 21693bab533..7fa95c6a5a3 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -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) \ /* Update the data in CUM to advance over an argument diff --git a/gcc/config/ns32k/ns32k.h b/gcc/config/ns32k/ns32k.h index 18a01c3573d..2f5109c9c8b 100644 --- a/gcc/config/ns32k/ns32k.h +++ b/gcc/config/ns32k/ns32k.h @@ -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. */ -#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ +#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \ ((CUM) = 0) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index d63bf642b3e..221f965d32d 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -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). 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 @@ -871,8 +871,9 @@ struct hppa_args {int words, nargs_prototype; }; for a call to a function whose data type is FNTYPE. 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).indirect = INDIRECT, \ (CUM).nargs_prototype = (FNTYPE && TYPE_ARG_TYPES (FNTYPE) \ ? (list_length (TYPE_ARG_TYPES (FNTYPE)) - 1 \ + (TYPE_MODE (TREE_TYPE (FNTYPE)) == BLKmode \ @@ -963,13 +964,13 @@ struct hppa_args {int words, nargs_prototype; }; || (CUM).nargs_prototype > 0) \ ? gen_rtx (REG, (MODE), \ (FUNCTION_ARG_SIZE ((MODE), (TYPE)) > 1 \ - ? (((!current_call_is_indirect \ + ? (((!(CUM).indirect \ || TARGET_PORTABLE_RUNTIME) \ && (MODE) == DFmode \ && ! TARGET_SOFT_FLOAT) \ ? ((CUM).words ? 38 : 34) \ : ((CUM).words ? 23 : 25)) \ - : (((!current_call_is_indirect \ + : (((!(CUM).indirect \ || TARGET_PORTABLE_RUNTIME) \ && (MODE) == SFmode \ && ! TARGET_SOFT_FLOAT) \ diff --git a/gcc/config/pdp11/pdp11.h b/gcc/config/pdp11/pdp11.h index a9d785f173a..f38a9a85b55 100644 --- a/gcc/config/pdp11/pdp11.h +++ b/gcc/config/pdp11/pdp11.h @@ -598,7 +598,7 @@ maybe ac0 ? - as option someday! */ when the function gets a structure-value-address as an invisible first argument. */ -#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ +#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \ ((CUM) = 0) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/pyr/pyr.h b/gcc/config/pyr/pyr.h index e59bd0acd1b..881956d2beb 100644 --- a/gcc/config/pyr/pyr.h +++ b/gcc/config/pyr/pyr.h @@ -629,7 +629,7 @@ extern int inner_param_safe_helper(); for a call to a function whose data type is FNTYPE. 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 \ && aggregate_value_p (TREE_TYPE (FNTYPE)))) diff --git a/gcc/config/romp/romp.h b/gcc/config/romp/romp.h index ce6664164d5..9fc6a4bfd02 100644 --- a/gcc/config/romp/romp.h +++ b/gcc/config/romp/romp.h @@ -591,7 +591,7 @@ struct rt_cargs {int gregs, fregs; }; when the function gets a structure-value-address as an invisible first argument. */ -#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) \ +#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) \ (CUM).gregs = 0, \ (CUM).fregs = 0 diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 469a56208d5..669dacbf885 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1310,7 +1310,7 @@ typedef struct rs6000_args for a call to a function whose data type is FNTYPE. 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) /* Similar, but when scanning the definition of a procedure. We always diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index cd10d842b42..c2e81b44cc2 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -708,7 +708,7 @@ struct sh_args { On SH, the offset always starts at 0: the first parm reg is always the same reg. */ -#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME) \ +#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT) \ do { \ (CUM).arg_count[(int) SH_ARG_INT] = 0; \ (CUM).arg_count[(int) SH_ARG_FLOAT] = 0; \ diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index 9e789c548e5..e811359d4bd 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -1460,7 +1460,7 @@ struct sparc_args { #if SPARC_ARCH64 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 { \ (CUM).arg_count[(int) SPARC_ARG_INT] = 0; \ (CUM).arg_count[(int) SPARC_ARG_FLOAT] = 0; \ @@ -1476,7 +1476,7 @@ extern int sparc_arg_count,sparc_n_named_args; : 10000); \ } while (0) #else -#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME) ((CUM) = 0) +#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) ((CUM) = 0) #endif /* Update the data in CUM to advance over an argument diff --git a/gcc/config/spur/spur.h b/gcc/config/spur/spur.h index 54bcd1918c6..75ddd4b6310 100644 --- a/gcc/config/spur/spur.h +++ b/gcc/config/spur/spur.h @@ -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 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))))) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/tahoe/tahoe.h b/gcc/config/tahoe/tahoe.h index 7eced776b3b..cd2b641a7f6 100644 --- a/gcc/config/tahoe/tahoe.h +++ b/gcc/config/tahoe/tahoe.h @@ -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 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) /* all modes push their size rounded to the nearest word boundary */ diff --git a/gcc/config/vax/vax.h b/gcc/config/vax/vax.h index 10ba85509c6..fd00fa75e7a 100644 --- a/gcc/config/vax/vax.h +++ b/gcc/config/vax/vax.h @@ -411,7 +411,7 @@ gen_rtx (PLUS, Pmode, frame, gen_rtx (CONST_INT, VOIDmode, 12)) 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) /* Update the data in CUM to advance over an argument diff --git a/gcc/config/we32k/we32k.h b/gcc/config/we32k/we32k.h index 90d4d5c1d16..bf1364a697c 100644 --- a/gcc/config/we32k/we32k.h +++ b/gcc/config/we32k/we32k.h @@ -360,7 +360,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, 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) /* Update the data in CUM to advance over an argument diff --git a/gcc/cp/method.c b/gcc/cp/method.c index c8732072d0a..a417e1c0d61 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1880,7 +1880,6 @@ emit_thunk (thunk_fndecl) int delta = THUNK_DELTA (thunk_fndecl); int tem; 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. */ rtx need_use[FIRST_PSEUDO_REGISTER]; @@ -1913,7 +1912,7 @@ emit_thunk (thunk_fndecl) expand_start_bindings (1); /* 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.var = 0; /* SETUP for possible structure return address FIXME */ diff --git a/gcc/expr.c b/gcc/expr.c index 47735dabe70..c3328a16779 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -8631,7 +8631,7 @@ expand_builtin (exp, target, subtarget, mode, ignore) op0 = memory_address (FUNCTION_MODE, op0); 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); #ifndef ACCUMULATE_OUTGOING_ARGS diff --git a/gcc/function.c b/gcc/function.c index f6ffe09ce7a..150aa8e4936 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -3235,9 +3235,6 @@ assign_parms (fndecl, second_time) int nparmregs = list_length (fnargs) + LAST_VIRTUAL_REGISTER + 1; int varargs_setup = 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', which is used on some machines for old-fashioned non-ANSI varargs.h; @@ -3299,7 +3296,7 @@ assign_parms (fndecl, second_time) #ifdef INIT_CUMULATIVE_INCOMING_ARGS INIT_CUMULATIVE_INCOMING_ARGS (args_so_far, fntype, NULL_RTX); #else - INIT_CUMULATIVE_ARGS (args_so_far, fntype, NULL_RTX); + INIT_CUMULATIVE_ARGS (args_so_far, fntype, NULL_RTX, 0); #endif /* We haven't yet found an argument that we must push and pretend the -- 2.30.2