diff options
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 2 | ||||
-rw-r--r-- | gcc/config/c6x/c6x.c | 15 | ||||
-rw-r--r-- | gcc/config/epiphany/epiphany.c | 2 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 6 | ||||
-rw-r--r-- | gcc/config/mmix/mmix.c | 2 | ||||
-rw-r--r-- | gcc/config/mn10300/mn10300.c | 2 | ||||
-rw-r--r-- | gcc/config/msp430/msp430.c | 11 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 8 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 10 | ||||
-rw-r--r-- | gcc/config/v850/v850.c | 2 |
10 files changed, 17 insertions, 43 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index f13a777..146d020 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -20346,7 +20346,7 @@ aarch64_run_selftests (void) #define TARGET_BUILD_BUILTIN_VA_LIST aarch64_build_builtin_va_list #undef TARGET_CALLEE_COPIES -#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false +#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_arg_info_false #undef TARGET_CAN_ELIMINATE #define TARGET_CAN_ELIMINATE aarch64_can_eliminate diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c index 383634f..37da9a4 100644 --- a/gcc/config/c6x/c6x.c +++ b/gcc/config/c6x/c6x.c @@ -635,7 +635,7 @@ c6x_function_value_regno_p (const unsigned int regno) } /* Types larger than 64 bit, and variable sized types, are passed by - reference. The callee must copy them; see c6x_callee_copies. */ + reference. The callee must copy them; see TARGET_CALLEE_COPIES. */ static bool c6x_pass_by_reference (cumulative_args_t, const function_arg_info &arg) @@ -669,17 +669,6 @@ c6x_return_in_msb (const_tree valtype) return TARGET_BIG_ENDIAN && AGGREGATE_TYPE_P (valtype) && size == 3; } -/* Implement TARGET_CALLEE_COPIES. */ - -static bool -c6x_callee_copies (cumulative_args_t cum_v ATTRIBUTE_UNUSED, - machine_mode mode ATTRIBUTE_UNUSED, - const_tree type ATTRIBUTE_UNUSED, - bool named ATTRIBUTE_UNUSED) -{ - return true; -} - /* Return the type to use as __builtin_va_list. */ static tree c6x_build_builtin_va_list (void) @@ -6726,7 +6715,7 @@ c6x_modes_tieable_p (machine_mode mode1, machine_mode mode2) #undef TARGET_PASS_BY_REFERENCE #define TARGET_PASS_BY_REFERENCE c6x_pass_by_reference #undef TARGET_CALLEE_COPIES -#define TARGET_CALLEE_COPIES c6x_callee_copies +#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_arg_info_true #undef TARGET_STRUCT_VALUE_RTX #define TARGET_STRUCT_VALUE_RTX c6x_struct_value_rtx #undef TARGET_FUNCTION_OK_FOR_SIBCALL diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c index 7dfb91f..cc51cfa 100644 --- a/gcc/config/epiphany/epiphany.c +++ b/gcc/config/epiphany/epiphany.c @@ -90,7 +90,7 @@ static rtx_insn *frame_insn (rtx); #define TARGET_RETURN_IN_MEMORY epiphany_return_in_memory #define TARGET_PASS_BY_REFERENCE epiphany_pass_by_reference -#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true +#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_arg_info_true #define TARGET_FUNCTION_VALUE epiphany_function_value #define TARGET_LIBCALL_VALUE epiphany_libcall_value #define TARGET_FUNCTION_VALUE_REGNO_P epiphany_function_value_regno_p diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index c4d08a4..37ebde5 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -6259,11 +6259,9 @@ mips_pass_by_reference (cumulative_args_t, const function_arg_info &arg) /* Implement TARGET_CALLEE_COPIES. */ static bool -mips_callee_copies (cumulative_args_t cum ATTRIBUTE_UNUSED, - machine_mode mode ATTRIBUTE_UNUSED, - const_tree type ATTRIBUTE_UNUSED, bool named) +mips_callee_copies (cumulative_args_t, const function_arg_info &arg) { - return mips_abi == ABI_EABI && named; + return mips_abi == ABI_EABI && arg.named; } /* See whether VALTYPE is a record whose fields should be returned in diff --git a/gcc/config/mmix/mmix.c b/gcc/config/mmix/mmix.c index 9c4eb2d..7c12e74 100644 --- a/gcc/config/mmix/mmix.c +++ b/gcc/config/mmix/mmix.c @@ -263,7 +263,7 @@ static HOST_WIDE_INT mmix_starting_frame_offset (void); #undef TARGET_PASS_BY_REFERENCE #define TARGET_PASS_BY_REFERENCE mmix_pass_by_reference #undef TARGET_CALLEE_COPIES -#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true +#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_arg_info_true #undef TARGET_PREFERRED_RELOAD_CLASS #define TARGET_PREFERRED_RELOAD_CLASS mmix_preferred_reload_class diff --git a/gcc/config/mn10300/mn10300.c b/gcc/config/mn10300/mn10300.c index 50020e2..5502d65 100644 --- a/gcc/config/mn10300/mn10300.c +++ b/gcc/config/mn10300/mn10300.c @@ -3354,7 +3354,7 @@ mn10300_reorg (void) #undef TARGET_PASS_BY_REFERENCE #define TARGET_PASS_BY_REFERENCE mn10300_pass_by_reference #undef TARGET_CALLEE_COPIES -#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true +#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_arg_info_true #undef TARGET_ARG_PARTIAL_BYTES #define TARGET_ARG_PARTIAL_BYTES mn10300_arg_partial_bytes #undef TARGET_FUNCTION_ARG diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c index 66bb217..c5cf704 100644 --- a/gcc/config/msp430/msp430.c +++ b/gcc/config/msp430/msp430.c @@ -750,16 +750,7 @@ msp430_pass_by_reference (cumulative_args_t, const function_arg_info &arg) } #undef TARGET_CALLEE_COPIES -#define TARGET_CALLEE_COPIES msp430_callee_copies - -static bool -msp430_callee_copies (cumulative_args_t cap ATTRIBUTE_UNUSED, - machine_mode mode ATTRIBUTE_UNUSED, - const_tree type ATTRIBUTE_UNUSED, - bool named ATTRIBUTE_UNUSED) -{ - return true; -} +#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_arg_info_true #undef TARGET_FUNCTION_ARG_ADVANCE #define TARGET_FUNCTION_ARG_ADVANCE msp430_function_arg_advance diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index ba14fbd..9366b106 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -197,8 +197,7 @@ static bool pa_cannot_force_const_mem (machine_mode, rtx); static bool pa_legitimate_constant_p (machine_mode, rtx); static unsigned int pa_section_type_flags (tree, const char *, int); static bool pa_legitimate_address_p (machine_mode, rtx, bool); -static bool pa_callee_copies (cumulative_args_t, machine_mode, - const_tree, bool); +static bool pa_callee_copies (cumulative_args_t, const function_arg_info &); static unsigned int pa_hard_regno_nregs (unsigned int, machine_mode); static bool pa_hard_regno_mode_ok (unsigned int, machine_mode); static bool pa_modes_tieable_p (machine_mode, machine_mode); @@ -10764,10 +10763,7 @@ pa_maybe_emit_compare_and_swap_exchange_loop (rtx target, rtx mem, rtx val) in the 64-bit HP runtime. */ static bool -pa_callee_copies (cumulative_args_t cum ATTRIBUTE_UNUSED, - machine_mode mode ATTRIBUTE_UNUSED, - const_tree type ATTRIBUTE_UNUSED, - bool named ATTRIBUTE_UNUSED) +pa_callee_copies (cumulative_args_t, const function_arg_info &) { return !TARGET_CALLER_COPIES; } diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index ac3c5a5..da912ca 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -296,8 +296,7 @@ static machine_mode sh_promote_function_mode (const_tree type, int for_return); static bool sh_pass_by_reference (cumulative_args_t, const function_arg_info &); -static bool sh_callee_copies (cumulative_args_t, machine_mode, - const_tree, bool); +static bool sh_callee_copies (cumulative_args_t, const function_arg_info &); static int sh_arg_partial_bytes (cumulative_args_t, const function_arg_info &); static void sh_function_arg_advance (cumulative_args_t, const function_arg_info &); @@ -7915,14 +7914,15 @@ sh_pass_by_reference (cumulative_args_t cum_v, const function_arg_info &arg) } static bool -sh_callee_copies (cumulative_args_t cum, machine_mode mode, - const_tree type, bool named ATTRIBUTE_UNUSED) +sh_callee_copies (cumulative_args_t cum, const function_arg_info &arg) { /* ??? How can it possibly be correct to return true only on the caller side of the equation? Is there someplace else in the sh backend that's magically producing the copies? */ return (get_cumulative_args (cum)->outgoing - && ((mode == BLKmode ? TYPE_ALIGN (type) : GET_MODE_ALIGNMENT (mode)) + && ((arg.mode == BLKmode + ? TYPE_ALIGN (arg.type) + : GET_MODE_ALIGNMENT (arg.mode)) % SH_MIN_ALIGN_FOR_CALLEE_COPY == 0)); } diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c index 26ad4a7..d5c9ba7 100644 --- a/gcc/config/v850/v850.c +++ b/gcc/config/v850/v850.c @@ -3263,7 +3263,7 @@ v850_modes_tieable_p (machine_mode mode1, machine_mode mode2) #define TARGET_PASS_BY_REFERENCE v850_pass_by_reference #undef TARGET_CALLEE_COPIES -#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true +#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_arg_info_true #undef TARGET_ARG_PARTIAL_BYTES #define TARGET_ARG_PARTIAL_BYTES v850_arg_partial_bytes |