diff options
author | Richard Henderson <rth@gcc.gnu.org> | 2004-09-08 11:45:21 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-09-08 11:45:21 -0700 |
commit | 6cdd56724aff3adc4bef1b5441526d84ddb6d2cb (patch) | |
tree | e2b5ae247504eef2927039baf6729090ed6d7ff8 /gcc/config/arc | |
parent | 7f7e0703105e0ba185eb29beba29e55964b48f55 (diff) | |
download | gcc-6cdd56724aff3adc4bef1b5441526d84ddb6d2cb.zip gcc-6cdd56724aff3adc4bef1b5441526d84ddb6d2cb.tar.gz gcc-6cdd56724aff3adc4bef1b5441526d84ddb6d2cb.tar.bz2 |
function.c (reference_callee_copied): New.
* function.c (reference_callee_copied): New.
(assign_parm_setup_reg): Use it.
* calls.c (initialize_argument_information): Likewise.
(emit_library_call_value_1): Likewise.
* function.h (reference_callee_copied): Declare.
* target.h (struct gcc_target): Add callee_copies.
* target-def.h (TARGET_CALLEE_COPIES): New.
(TARGET_PASS_BY_REFERENCE): Update default.
* expr.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* targhooks.c (hook_callee_copies_named): New.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false): Rename from
hook_pass_by_reference_false.
(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true): New.
* targhooks.h: Update decls.
* config/arc/arc.c (TARGET_CALLEE_COPIES): New.
* config/arc/arc.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* config/frv/frv-protos.h (frv_function_arg_callee_copies): Remove.
* config/frv/frv.c (frv_function_arg_callee_copies): Remove.
* config/frv/frv.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* config/iq2000/iq2000.c (TARGET_CALLEE_COPIES): New.
* config/iq2000/iq2000.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* config/m68hc11/m68hc11.c (TARGET_CALLEE_COPIES): New.
* config/m68hc11/m68hc11.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* config/mips/mips.c (TARGET_CALLEE_COPIES): New.
(mips_callee_copies): New.
* config/mips/mips.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* config/mmix/mmix.c (TARGET_CALLEE_COPIES): New.
* config/mmix/mmix.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* config/mn10300/mn10300.c (TARGET_CALLEE_COPIES): New.
* config/mn10300/mn10300.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* config/pa/pa.c (TARGET_CALLEE_COPIES): New.
* config/pa/pa.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* config/sh/sh.c (sh_callee_copies): New.
(TARGET_CALLEE_COPIES): New.
* config/sh/sh.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* config/v850/v850.c (TARGET_CALLEE_COPIES): New.
* config/v850/v850.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
* doc/tm.texi (TARGET_CALLEE_COPIES): Replace documentation
for FUNCTION_ARG_CALLEE_COPIES.
* doc/rtl.texi (CALL_INSN_FUNCTION_USAGE): Update.
From-SVN: r87195
Diffstat (limited to 'gcc/config/arc')
-rw-r--r-- | gcc/config/arc/arc.c | 3 | ||||
-rw-r--r-- | gcc/config/arc/arc.h | 9 |
2 files changed, 2 insertions, 10 deletions
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 9fc5ee2..90419f9 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -142,6 +142,8 @@ static bool arc_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, #define TARGET_RETURN_IN_MEMORY arc_return_in_memory #undef TARGET_PASS_BY_REFERENCE #define TARGET_PASS_BY_REFERENCE arc_pass_by_reference +#undef TARGET_CALLEE_COPIES +#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true #undef TARGET_SETUP_INCOMING_VARARGS #define TARGET_SETUP_INCOMING_VARARGS arc_setup_incoming_varargs @@ -2356,4 +2358,3 @@ arc_pass_by_reference (CUMULATIVE_ARGS *ca ATTRIBUTE_UNUSED, return size > 8; } - diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h index eefac0c..6b94cd1 100644 --- a/gcc/config/arc/arc.h +++ b/gcc/config/arc/arc.h @@ -696,15 +696,6 @@ extern enum reg_class arc_regno_reg_class[FIRST_PSEUDO_REGISTER]; registers. */ #define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) 0 -/* A C expression that indicates when it is the called function's - responsibility to make copies of arguments passed by reference. - If the callee can determine that the argument won't be modified, it can - avoid the copy. */ -/* ??? We'd love to be able to use NAMED here. Unfortunately, it doesn't - include the last named argument so we keep track of the args ourselves. */ - -#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 1 - /* 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 may not be available.) */ |