diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-14 06:24:27 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-07-14 06:24:27 +0000 |
commit | b981d932962c8e9f6744359ef47d255a2c6b3be8 (patch) | |
tree | 0831bbea139cb77f60030d22ed84f1ab3e43068a /gcc/config/iq2000 | |
parent | 1344a976e60432908706853a9e01e0b0e1db27c5 (diff) | |
download | gcc-b981d932962c8e9f6744359ef47d255a2c6b3be8.tar.gz |
* target.h (struct gcc_target): Add calls.pass_by_reference.
* target-def.h (TARGET_PASS_BY_REFERENCE): New.
* function.c (pass_by_reference): Use the hook.
* system.h (FUNCTION_ARG_PASS_BY_REFERENCE): Poison.
* targhooks.c, targhooks.h (hook_pass_by_reference_false): New.
(hook_pass_by_reference_must_pass_in_stack): New.
* config/alpha/alpha.c (function_arg): Don't query pass-by-ref.
(alpha_pass_by_reference): New.
(TARGET_PASS_BY_REFERENCE): New.
* config/alpha/alpha.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/arc/arc.c (arc_pass_by_reference): New.
(TARGET_PASS_BY_REFERENCE): New.
* config/arc/arc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
(FUNCTION_ARG_CALLEE_COPIES): True.
* config/arm/arm-protos.h (arm_function_arg_pass_by_reference): Remove.
* config/arm/arm.c (TARGET_PASS_BY_REFERENCE): New.
(arm_pass_by_reference): Rename from arm_function_arg_pass_by_reference.
* config/arm/arm.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/c4x/c4x.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/cris/cris.c (cris_pass_by_reference): New.
(TARGET_PASS_BY_REFERENCE): New.
* config/cris/cris.h (FUNCTION_ARG): Don't query pass-by-ref.
(FUNCTION_INCOMING_ARG, FUNCTION_ARG_ADVANCE): Likewise.
(FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/fr30/fr30.c (TARGET_PASS_BY_REFERENCE): New.
* config/fr30/fr30.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/frv/frv-protos.h (frv_function_arg_pass_by_reference): Kill.
* config/frv/frv.c (TARGET_PASS_BY_REFERENCE): New.
(frv_function_arg_pass_by_reference): Remove.
* config/frv/frv.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/i386/i386-protos.h (function_arg_pass_by_reference): Remove.
* config/i386/i386.c (TARGET_PASS_BY_REFERENCE): New.
(ix86_pass_by_reference): Rename from function_arg_pass_by_reference.
* config/i386/i386.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/ia64/ia64-protos.h (ia64_function_arg_pass_by_reference): Kill.
* config/ia64/ia64.c (TARGET_PASS_BY_REFERENCE): New.
(ia64_pass_by_reference): Rename from
ia64_function_arg_pass_by_reference.
* config/ia64/ia64.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/ip2k/ip2k.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/iq2000/iq2000-protos.h (function_arg_pass_by_reference): Kill.
* config/iq2000/iq2000.c (TARGET_PASS_BY_REFERENCE): New.
(iq2000_pass_by_reference): Rename from function_arg_pass_by_reference.
* config/iq2000/iq2000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
(FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
* config/m32r/m32r-protos.h (m32r_pass_by_reference): Remove.
* config/m32r/m32r.c (TARGET_PASS_BY_REFERENCE): New.
(m32r_pass_by_reference): Adjust prototype. Make static.
Handle mode sizes correctly.
* config/m32r/m32r.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c
(m68hc11_function_arg_pass_by_reference): Remove.
* config/m68hc11/m68hc11.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
(FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
* config/mcore/mcore.c (TARGET_PASS_BY_REFERENCE): New.
* config/mcore/mcore.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/mips/mips-protos.h (function_arg_pass_by_reference): Remove.
* config/mips/mips.c (TARGET_PASS_BY_REFERENCE): New.
(mips_va_arg): Use pass_by_reference.
(mips_pass_by_reference): Rename from function_arg_pass_by_reference.
Handle mode sizes correctly.
* config/mips/mips.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
(FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
* config/mmix/mmix-protos.h (mmix_function_arg_pass_by_reference): Kill.
* config/mmix/mmix.c (TARGET_PASS_BY_REFERENCE): New.
(mmix_pass_by_reference): Rename from
mmix_function_arg_pass_by_reference.
* config/mmix/mmix.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
(FUNCTION_ARG_CALLEE_COPIES): True.
* config/mn10300/mn10300.c (TARGET_PASS_BY_REFERENCE): New.
(mn10300_pass_by_reference): New.
* config/mn10300/mn10300.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
(FUNCTION_ARG_CALLEE_COPIES): True.
* config/pa/pa.c (pa_pass_by_reference): New.
(TARGET_PASS_BY_REFERENCE): New.
* config/pa/pa.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
(FUNCTION_ARG_CALLEE_COPIES): True.
* config/rs6000/rs6000-protos.h (function_arg_pass_by_reference): Kill.
* config/rs6000/rs6000.c (TARGET_PASS_BY_REFERENCE): New.
(rs6000_pass_by_reference): Rename from function_arg_pass_by_reference.
* config/rs6000/rs6000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/s390/s390-protos.h (s390_function_arg_pass_by_reference): Kill.
* config/s390/s390.c (TARGET_PASS_BY_REFERENCE): New.
(s390_pass_by_reference): Rename from
s390_function_arg_pass_by_reference.
(s390_function_arg_advance): Don't query pass-by-ref.
(s390_function_arg): Likewise.
(s390_gimplify_va_arg): Use pass_by_reference.
(s390_call_saved_register_used): Likewise.
* config/s390/s390.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/sh/sh.c (TARGET_PASS_BY_REFERENCE): New.
(shcompact_byref, sh_pass_by_reference): New.
* config/sh/sh.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
(SHCOMPACT_BYREF): Remove.
* config/sparc/sparc-protos.h (function_arg_pass_by_reference): Kill.
* config/sparc/sparc.c (TARGET_PASS_BY_REFERENCE): New.
(sparc_pass_by_reference): Rename from function_arg_pass_by_reference.
(sparc_gimplify_va_arg): Use pass_by_reference.
* config/sparc/sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/stormy16/stormy16.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
* config/v850/v850.c (TARGET_PASS_BY_REFERENCE): New.
(v850_pass_by_reference): New.
* config/v850/v850.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
(FUNCTION_ARG_CALLEE_COPIES): True.
* doc/tm.texi (TARGET_PASS_BY_REFERENCE): Update from
FUNCTION_ARG_PASS_BY_REFERENCE docs.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84672 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/iq2000')
-rw-r--r-- | gcc/config/iq2000/iq2000-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/iq2000/iq2000.c | 14 | ||||
-rw-r--r-- | gcc/config/iq2000/iq2000.h | 6 |
3 files changed, 9 insertions, 12 deletions
diff --git a/gcc/config/iq2000/iq2000-protos.h b/gcc/config/iq2000/iq2000-protos.h index 60c34bc37ab..c0eae3b01f1 100644 --- a/gcc/config/iq2000/iq2000-protos.h +++ b/gcc/config/iq2000/iq2000-protos.h @@ -35,7 +35,6 @@ extern void iq2000_expand_prologue (void); extern void iq2000_expand_epilogue (void); extern void iq2000_expand_eh_return (rtx); extern int iq2000_can_use_return_insn (void); -extern int function_arg_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, tree, int); extern int iq2000_adjust_insn_length (rtx, int); extern char * iq2000_output_conditional_branch (rtx, rtx *, int, int, int, int); extern void print_operand_address (FILE *, rtx); diff --git a/gcc/config/iq2000/iq2000.c b/gcc/config/iq2000/iq2000.c index 4da87120257..0e2f7c146f6 100644 --- a/gcc/config/iq2000/iq2000.c +++ b/gcc/config/iq2000/iq2000.c @@ -171,6 +171,8 @@ static bool iq2000_rtx_costs (rtx, int, int, int *); static int iq2000_address_cost (rtx); static void iq2000_select_section (tree, int, unsigned HOST_WIDE_INT); static bool iq2000_return_in_memory (tree, tree); +static bool iq2000_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, + tree, bool); #undef TARGET_INIT_BUILTINS #define TARGET_INIT_BUILTINS iq2000_init_builtins @@ -194,6 +196,8 @@ static bool iq2000_return_in_memory (tree, tree); #undef TARGET_RETURN_IN_MEMORY #define TARGET_RETURN_IN_MEMORY iq2000_return_in_memory +#undef TARGET_PASS_BY_REFERENCE +#define TARGET_PASS_BY_REFERENCE iq2000_pass_by_reference #undef TARGET_SETUP_INCOMING_VARARGS #define TARGET_SETUP_INCOMING_VARARGS iq2000_setup_incoming_varargs @@ -2471,13 +2475,11 @@ iq2000_function_value (tree valtype, tree func ATTRIBUTE_UNUSED) return gen_rtx_REG (mode, reg); } -/* The implementation of FUNCTION_ARG_PASS_BY_REFERENCE. Return - nonzero when an argument must be passed by reference. */ +/* Return true when an argument must be passed by reference. */ -int -function_arg_pass_by_reference (CUMULATIVE_ARGS *cum ATTRIBUTE_UNUSED, - enum machine_mode mode, tree type, - int named ATTRIBUTE_UNUSED) +static bool +iq2000_pass_by_reference (CUMULATIVE_ARGS *cum, enum machine_mode mode, + tree type, bool named ATTRIBUTE_UNUSED) { int size; diff --git a/gcc/config/iq2000/iq2000.h b/gcc/config/iq2000/iq2000.h index d4e27c1aae3..f6f381089e2 100644 --- a/gcc/config/iq2000/iq2000.h +++ b/gcc/config/iq2000/iq2000.h @@ -441,11 +441,7 @@ enum reg_class #define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) \ function_arg_partial_nregs (& CUM, MODE, TYPE, NAMED) -#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) \ - function_arg_pass_by_reference (& CUM, MODE, TYPE, NAMED) - -#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) \ - ((NAMED) && FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED)) +#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) (NAMED) #define MAX_ARGS_IN_REGISTERS 8 |