From e1968bbaad35369d758bf0dd0cdd5da96c9ea63d Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 22 May 2012 08:19:51 +0930 Subject: [PATCH] rs6000.c: Delete unnecessary forward declarations. * config/rs6000/rs6000.c: Delete unnecessary forward declarations. Move those with ATTRIBUTE_UNUSED to immediately before definitions. Move function pointer variables after forward declarations. (rs6000_builtin_support_vector_misalignment): Make static. (rs6000_legitimate_address_p, rs6000_gimplify_va_arg): Likewise. (rs6000_function_value, rs6000_can_eliminate): Likewise. From-SVN: r187748 --- gcc/ChangeLog | 9 ++ gcc/config/rs6000/rs6000.c | 273 ++++++--------------------------------------- 2 files changed, 41 insertions(+), 241 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7015fac2809..cd6b7a77215 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-05-22 Alan Modra + + * config/rs6000/rs6000.c: Delete unnecessary forward declarations. + Move those with ATTRIBUTE_UNUSED to immediately before definitions. + Move function pointer variables after forward declarations. + (rs6000_builtin_support_vector_misalignment): Make static. + (rs6000_legitimate_address_p, rs6000_gimplify_va_arg): Likewise. + (rs6000_function_value, rs6000_can_eliminate): Likewise. + 2012-05-21 Bernd Schmidt PR rtl-optimization/53373 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index dbd1b4a37ca..a9e73d1dc43 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -920,310 +920,103 @@ static const struct rs6000_builtin_info_type rs6000_builtin_info[] = static tree (*rs6000_veclib_handler) (tree, tree, tree); -static bool rs6000_function_ok_for_sibcall (tree, tree); -static const char *rs6000_invalid_within_doloop (const_rtx); -static bool rs6000_legitimate_address_p (enum machine_mode, rtx, bool); static bool rs6000_debug_legitimate_address_p (enum machine_mode, rtx, bool); -static rtx rs6000_generate_compare (rtx, enum machine_mode); static bool spe_func_has_64bit_regs_p (void); -static rtx gen_frame_mem_offset (enum machine_mode, rtx, int); -static unsigned rs6000_hash_constant (rtx); -static unsigned toc_hash_function (const void *); -static int toc_hash_eq (const void *, const void *); -static bool reg_offset_addressing_ok_p (enum machine_mode); -static bool virtual_stack_registers_memory_p (rtx); -static bool constant_pool_expr_p (rtx); -static bool legitimate_small_data_p (enum machine_mode, rtx); -static bool legitimate_lo_sum_address_p (enum machine_mode, rtx, int); static struct machine_function * rs6000_init_machine_status (void); -static bool rs6000_assemble_integer (rtx, unsigned int, int); -#if defined (HAVE_GAS_HIDDEN) && !TARGET_MACHO -static void rs6000_assemble_visibility (tree, int); -#endif static int rs6000_ra_ever_killed (void); -static bool rs6000_attribute_takes_identifier_p (const_tree); static tree rs6000_handle_longcall_attribute (tree *, tree, tree, int, bool *); static tree rs6000_handle_altivec_attribute (tree *, tree, tree, int, bool *); -static bool rs6000_ms_bitfield_layout_p (const_tree); static tree rs6000_handle_struct_attribute (tree *, tree, tree, int, bool *); -static void rs6000_eliminate_indexed_memrefs (rtx operands[2]); -static const char *rs6000_mangle_type (const_tree); -static void rs6000_set_default_type_attributes (tree); -static bool rs6000_reg_live_or_pic_offset_p (int); static tree rs6000_builtin_vectorized_libmass (tree, tree, tree); -static tree rs6000_builtin_vectorized_function (tree, tree, tree); -static bool rs6000_output_addr_const_extra (FILE *, rtx); -static void rs6000_output_function_prologue (FILE *, HOST_WIDE_INT); -static void rs6000_output_function_epilogue (FILE *, HOST_WIDE_INT); -static void rs6000_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, - tree); static rtx rs6000_emit_set_long_const (rtx, HOST_WIDE_INT, HOST_WIDE_INT); -static bool rs6000_return_in_memory (const_tree, const_tree); -static rtx rs6000_function_value (const_tree, const_tree, bool); -static void rs6000_file_start (void); -#if TARGET_ELF -static int rs6000_elf_reloc_rw_mask (void); -static void rs6000_elf_asm_out_constructor (rtx, int) ATTRIBUTE_UNUSED; -static void rs6000_elf_asm_out_destructor (rtx, int) ATTRIBUTE_UNUSED; -static void rs6000_elf_file_end (void) ATTRIBUTE_UNUSED; -static void rs6000_elf_asm_init_sections (void); -static section *rs6000_elf_select_rtx_section (enum machine_mode, rtx, - unsigned HOST_WIDE_INT); -static void rs6000_elf_encode_section_info (tree, rtx, int) - ATTRIBUTE_UNUSED; -#endif -static bool rs6000_use_blocks_for_constant_p (enum machine_mode, const_rtx); -static void rs6000_alloc_sdmode_stack_slot (void); -static void rs6000_instantiate_decls (void); -#if TARGET_XCOFF -static void rs6000_xcoff_asm_output_anchor (rtx); -static void rs6000_xcoff_asm_globalize_label (FILE *, const char *); -static void rs6000_xcoff_asm_init_sections (void); -static int rs6000_xcoff_reloc_rw_mask (void); -static void rs6000_xcoff_asm_named_section (const char *, unsigned int, tree); -static section *rs6000_xcoff_select_section (tree, int, - unsigned HOST_WIDE_INT); -static void rs6000_xcoff_unique_section (tree, int); -static section *rs6000_xcoff_select_rtx_section - (enum machine_mode, rtx, unsigned HOST_WIDE_INT); -static const char * rs6000_xcoff_strip_name_encoding (const char *); -static unsigned int rs6000_xcoff_section_type_flags (tree, const char *, int); -static void rs6000_xcoff_file_start (void); -static void rs6000_xcoff_file_end (void); -#endif -static int rs6000_variable_issue (FILE *, int, rtx, int); -static int rs6000_register_move_cost (enum machine_mode, - reg_class_t, reg_class_t); static int rs6000_memory_move_cost (enum machine_mode, reg_class_t, bool); -static bool rs6000_rtx_costs (rtx, int, int, int, int *, bool); static bool rs6000_debug_rtx_costs (rtx, int, int, int, int *, bool); static int rs6000_debug_address_cost (rtx, bool); -static int rs6000_adjust_cost (rtx, rtx, rtx, int); static int rs6000_debug_adjust_cost (rtx, rtx, rtx, int); -static void rs6000_sched_init (FILE *, int, int); static bool is_microcoded_insn (rtx); static bool is_nonpipeline_insn (rtx); static bool is_cracked_insn (rtx); -static bool is_branch_slot_insn (rtx); static bool is_load_insn (rtx); static rtx get_store_dest (rtx pat); static bool is_store_insn (rtx); static bool set_to_load_agen (rtx,rtx); -static bool adjacent_mem_locations (rtx,rtx); -static int rs6000_adjust_priority (rtx, int); -static int rs6000_issue_rate (void); -static bool rs6000_is_costly_dependence (dep_t, int, int); -static rtx get_next_active_insn (rtx, rtx); static bool insn_terminates_group_p (rtx , enum group_termination); static bool insn_must_be_first_in_group (rtx); static bool insn_must_be_last_in_group (rtx); -static bool is_costly_group (rtx *, rtx); -static int force_new_group (int, FILE *, rtx *, rtx, bool *, int, int *); -static int redefine_groups (FILE *, int, rtx, rtx); -static int pad_groups (FILE *, int, rtx, rtx); -static void rs6000_sched_finish (FILE *, int); -static int rs6000_sched_reorder (FILE *, int, rtx *, int *, int); -static int rs6000_sched_reorder2 (FILE *, int, rtx *, int *, int); -static int rs6000_use_sched_lookahead (void); -static int rs6000_use_sched_lookahead_guard (rtx); -static void * rs6000_alloc_sched_context (void); -static void rs6000_init_sched_context (void *, bool); -static void rs6000_set_sched_context (void *); -static void rs6000_free_sched_context (void *); -static tree rs6000_builtin_reciprocal (unsigned int, bool, bool); -static tree rs6000_builtin_mask_for_load (void); -static tree rs6000_builtin_mul_widen_even (tree); -static tree rs6000_builtin_mul_widen_odd (tree); -static bool rs6000_builtin_support_vector_misalignment (enum - machine_mode, - const_tree, - int, bool); -static int rs6000_builtin_vectorization_cost (enum vect_cost_for_stmt, - tree, int); -static enum machine_mode rs6000_preferred_simd_mode (enum machine_mode); - -static void def_builtin (const char *, tree, enum rs6000_builtins); -static bool rs6000_vector_alignment_reachable (const_tree, bool); -static void rs6000_init_builtins (void); -static tree rs6000_builtin_decl (unsigned, bool); - -static rtx rs6000_expand_unop_builtin (enum insn_code, tree, rtx); -static rtx rs6000_expand_binop_builtin (enum insn_code, tree, rtx); -static rtx rs6000_expand_ternop_builtin (enum insn_code, tree, rtx); -static rtx rs6000_expand_builtin (tree, rtx, rtx, enum machine_mode, int); static void altivec_init_builtins (void); -static unsigned builtin_hash_function (const void *); -static int builtin_hash_eq (const void *, const void *); static tree builtin_function_type (enum machine_mode, enum machine_mode, enum machine_mode, enum machine_mode, enum rs6000_builtins, const char *name); static void rs6000_common_init_builtins (void); -static void rs6000_init_libfuncs (void); - static void paired_init_builtins (void); -static rtx paired_expand_builtin (tree, rtx, bool *); -static rtx paired_expand_lv_builtin (enum insn_code, tree, rtx); -static rtx paired_expand_stv_builtin (enum insn_code, tree); static rtx paired_expand_predicate_builtin (enum insn_code, tree, rtx); - static void spe_init_builtins (void); -static rtx spe_expand_builtin (tree, rtx, bool *); -static rtx spe_expand_stv_builtin (enum insn_code, tree); static rtx spe_expand_predicate_builtin (enum insn_code, tree, rtx); static rtx spe_expand_evsel_builtin (enum insn_code, tree, rtx); static int rs6000_emit_int_cmove (rtx, rtx, rtx, rtx); static rs6000_stack_t *rs6000_stack_info (void); -static void debug_stack_info (rs6000_stack_t *); - -static rtx altivec_expand_builtin (tree, rtx, bool *); -static rtx altivec_expand_ld_builtin (tree, rtx, bool *); -static rtx altivec_expand_st_builtin (tree, rtx, bool *); -static rtx altivec_expand_dst_builtin (tree, rtx, bool *); -static rtx altivec_expand_abs_builtin (enum insn_code, tree, rtx); -static rtx altivec_expand_predicate_builtin (enum insn_code, tree, rtx); -static rtx altivec_expand_stv_builtin (enum insn_code, tree); -static rtx altivec_expand_vec_init_builtin (tree, tree, rtx); -static rtx altivec_expand_vec_set_builtin (tree); -static rtx altivec_expand_vec_ext_builtin (tree, rtx); -static int get_element_number (tree, tree); -static void rs6000_option_override (void); -static int rs6000_loop_align_max_skip (rtx); -static int first_altivec_reg_to_save (void); -static unsigned int compute_vrsave_mask (void); -static void compute_save_world_info (rs6000_stack_t *info_ptr); static void is_altivec_return_reg (rtx, void *); -static rtx generate_set_vrsave (rtx, rs6000_stack_t *, int); int easy_vector_constant (rtx, enum machine_mode); -static rtx rs6000_dwarf_register_span (rtx); -static void rs6000_init_dwarf_reg_sizes_extra (tree); -static rtx rs6000_legitimize_address (rtx, rtx, enum machine_mode); static rtx rs6000_debug_legitimize_address (rtx, rtx, enum machine_mode); static rtx rs6000_legitimize_tls_address (rtx, enum tls_model); -static void rs6000_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED; -static rtx rs6000_delegitimize_address (rtx); -static bool rs6000_const_not_ok_for_debug_p (rtx); -static rtx rs6000_tls_get_addr (void); -static rtx rs6000_got_sym (void); static int rs6000_tls_symbol_ref_1 (rtx *, void *); -static const char *rs6000_get_some_local_dynamic_name (void); static int rs6000_get_some_local_dynamic_name_1 (rtx *, void *); -static rtx rs6000_complex_function_value (enum machine_mode); -static rtx rs6000_spe_function_arg (const CUMULATIVE_ARGS *, - enum machine_mode, const_tree); -static void rs6000_darwin64_record_arg_advance_flush (CUMULATIVE_ARGS *, - HOST_WIDE_INT, int); -static void rs6000_darwin64_record_arg_advance_recurse (CUMULATIVE_ARGS *, - const_tree, - HOST_WIDE_INT); -static void rs6000_darwin64_record_arg_flush (CUMULATIVE_ARGS *, - HOST_WIDE_INT, - rtx[], int *); -static void rs6000_darwin64_record_arg_recurse (CUMULATIVE_ARGS *, - const_tree, HOST_WIDE_INT, - rtx[], int *); -static rtx rs6000_darwin64_record_arg (CUMULATIVE_ARGS *, const_tree, bool, bool); -static rtx rs6000_mixed_function_arg (enum machine_mode, const_tree, int); -static void rs6000_function_arg_advance (cumulative_args_t, enum machine_mode, - const_tree, bool); -static rtx rs6000_function_arg (cumulative_args_t, enum machine_mode, - const_tree, bool); -static unsigned int rs6000_function_arg_boundary (enum machine_mode, - const_tree); -static void rs6000_move_block_from_reg (int regno, rtx x, int nregs); -static void setup_incoming_varargs (cumulative_args_t, - enum machine_mode, tree, - int *, int); -static bool rs6000_pass_by_reference (cumulative_args_t, enum machine_mode, - const_tree, bool); -static int rs6000_arg_partial_bytes (cumulative_args_t, enum machine_mode, - tree, bool); -static const char *invalid_arg_for_unprototyped_fn (const_tree, const_tree, const_tree); +static rtx rs6000_darwin64_record_arg (CUMULATIVE_ARGS *, const_tree, + bool, bool); #if TARGET_MACHO static void macho_branch_islands (void); -static int no_previous_def (tree function_name); -static tree get_prev_label (tree function_name); -static void rs6000_darwin_file_start (void); #endif - -static tree rs6000_build_builtin_va_list (void); -static void rs6000_va_start (tree, rtx); -static tree rs6000_gimplify_va_arg (tree, tree, gimple_seq *, gimple_seq *); -static bool rs6000_must_pass_in_stack (enum machine_mode, const_tree); -static bool rs6000_scalar_mode_supported_p (enum machine_mode); -static bool rs6000_vector_mode_supported_p (enum machine_mode); -static rtx rs6000_emit_vector_compare_inner (enum rtx_code, rtx, rtx); -static rtx rs6000_emit_vector_compare (enum rtx_code, rtx, rtx, - enum machine_mode); -static tree rs6000_stack_protect_fail (void); - static rtx rs6000_legitimize_reload_address (rtx, enum machine_mode, int, int, int, int *); - static rtx rs6000_debug_legitimize_reload_address (rtx, enum machine_mode, int, int, int, int *); - -rtx (*rs6000_legitimize_reload_address_ptr) (rtx, enum machine_mode, int, int, - int, int *) - = rs6000_legitimize_reload_address; - -static bool rs6000_mode_dependent_address_p (const_rtx); static bool rs6000_mode_dependent_address (const_rtx); static bool rs6000_debug_mode_dependent_address (const_rtx); -static bool (*rs6000_mode_dependent_address_ptr) (const_rtx) - = rs6000_mode_dependent_address; - static enum reg_class rs6000_secondary_reload_class (enum reg_class, enum machine_mode, rtx); static enum reg_class rs6000_debug_secondary_reload_class (enum reg_class, enum machine_mode, rtx); -enum reg_class (*rs6000_secondary_reload_class_ptr) (enum reg_class, - enum machine_mode, rtx) - = rs6000_secondary_reload_class; - static enum reg_class rs6000_preferred_reload_class (rtx, enum reg_class); static enum reg_class rs6000_debug_preferred_reload_class (rtx, enum reg_class); -enum reg_class (*rs6000_preferred_reload_class_ptr) (rtx, enum reg_class) - = rs6000_preferred_reload_class; - static bool rs6000_secondary_memory_needed (enum reg_class, enum reg_class, enum machine_mode); - static bool rs6000_debug_secondary_memory_needed (enum reg_class, enum reg_class, enum machine_mode); - -bool (*rs6000_secondary_memory_needed_ptr) (enum reg_class, enum reg_class, - enum machine_mode) - = rs6000_secondary_memory_needed; - static bool rs6000_cannot_change_mode_class (enum machine_mode, enum machine_mode, enum reg_class); static bool rs6000_debug_cannot_change_mode_class (enum machine_mode, enum machine_mode, enum reg_class); +static bool rs6000_save_toc_in_prologue_p (void); + +rtx (*rs6000_legitimize_reload_address_ptr) (rtx, enum machine_mode, int, int, + int, int *) + = rs6000_legitimize_reload_address; + +static bool (*rs6000_mode_dependent_address_ptr) (const_rtx) + = rs6000_mode_dependent_address; + +enum reg_class (*rs6000_secondary_reload_class_ptr) (enum reg_class, + enum machine_mode, rtx) + = rs6000_secondary_reload_class; + +enum reg_class (*rs6000_preferred_reload_class_ptr) (rtx, enum reg_class) + = rs6000_preferred_reload_class; + +bool (*rs6000_secondary_memory_needed_ptr) (enum reg_class, enum reg_class, + enum machine_mode) + = rs6000_secondary_memory_needed; bool (*rs6000_cannot_change_mode_class_ptr) (enum machine_mode, enum machine_mode, enum reg_class) = rs6000_cannot_change_mode_class; -static reg_class_t rs6000_secondary_reload (bool, rtx, reg_class_t, - enum machine_mode, - struct secondary_reload_info *); - const int INSN_NOT_AVAILABLE = -1; -static enum machine_mode rs6000_eh_return_filter_mode (void); -static bool rs6000_can_eliminate (const int, const int); -static void rs6000_conditional_register_usage (void); -static void rs6000_trampoline_init (rtx, tree, rtx); -static bool rs6000_cannot_force_const_mem (enum machine_mode, rtx); -static bool rs6000_legitimate_constant_p (enum machine_mode, rtx); -static bool rs6000_save_toc_in_prologue_p (void); -static void rs6000_code_end (void) ATTRIBUTE_UNUSED; -static void rs6000_set_up_by_prologue (struct hard_reg_set_container *); /* Hash table stuff for keeping track of TOC entries. */ @@ -1249,14 +1042,6 @@ struct GTY(()) builtin_hash_struct static GTY ((param_is (struct builtin_hash_struct))) htab_t builtin_hash_table; -static bool rs6000_valid_attribute_p (tree, tree, tree, int); -static void rs6000_function_specific_save (struct cl_target_option *); -static void rs6000_function_specific_restore (struct cl_target_option *); -static void rs6000_function_specific_print (FILE *, int, - struct cl_target_option *); -static bool rs6000_can_inline_p (tree, tree); -static void rs6000_set_current_function (tree); - /* Default register names. */ char rs6000_reg_names[][8] = @@ -3523,7 +3308,7 @@ rs6000_vector_alignment_reachable (const_tree type ATTRIBUTE_UNUSED, bool is_pac /* Return true if the vector misalignment factor is supported by the target. */ -bool +static bool rs6000_builtin_support_vector_misalignment (enum machine_mode mode, const_tree type, int misalignment, @@ -5787,6 +5572,7 @@ rs6000_debug_legitimize_address (rtx x, rtx oldx, enum machine_mode mode) /* This is called from dwarf2out.c via TARGET_ASM_OUTPUT_DWARF_DTPREL. We need to emit DTP-relative relocations. */ +static void rs6000_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED; static void rs6000_output_dwarf_dtprel (FILE *file, int size, rtx x) { @@ -6419,7 +6205,7 @@ rs6000_debug_legitimize_reload_address (rtx x, enum machine_mode mode, 32-bit DImode, TImode, TFmode, TDmode), indexed addressing cannot be used because adjacent memory cells are accessed by adding word-sized offsets during assembly output. */ -bool +static bool rs6000_legitimate_address_p (enum machine_mode mode, rtx x, bool reg_ok_strict) { bool reg_offset_p = reg_offset_addressing_ok_p (mode); @@ -9207,7 +8993,7 @@ rs6000_va_start (tree valist, rtx nextarg) /* Implement va_arg. */ -tree +static tree rs6000_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p, gimple_seq *post_p) { @@ -24740,6 +24526,7 @@ rs6000_elf_select_rtx_section (enum machine_mode mode, rtx x, function descriptor name. This saves a lot of overriding code to read the prefixes. */ +static void rs6000_elf_encode_section_info (tree, rtx, int) ATTRIBUTE_UNUSED; static void rs6000_elf_encode_section_info (tree decl, rtx rtl, int first) { @@ -25252,6 +25039,7 @@ rs6000_elf_reloc_rw_mask (void) This differs from default_named_section_asm_out_constructor in that we have special handling for -mrelocatable. */ +static void rs6000_elf_asm_out_constructor (rtx, int) ATTRIBUTE_UNUSED; static void rs6000_elf_asm_out_constructor (rtx symbol, int priority) { @@ -25281,6 +25069,7 @@ rs6000_elf_asm_out_constructor (rtx symbol, int priority) assemble_integer (symbol, POINTER_SIZE / BITS_PER_UNIT, POINTER_SIZE, 1); } +static void rs6000_elf_asm_out_destructor (rtx, int) ATTRIBUTE_UNUSED; static void rs6000_elf_asm_out_destructor (rtx symbol, int priority) { @@ -25386,6 +25175,7 @@ rs6000_elf_declare_function_name (FILE *file, const char *name, tree decl) ASM_OUTPUT_LABEL (file, name); } +static void rs6000_elf_file_end (void) ATTRIBUTE_UNUSED; static void rs6000_elf_file_end (void) { @@ -26931,7 +26721,7 @@ rs6000_complex_function_value (enum machine_mode mode) On RS/6000 an integer value is in r3 and a floating-point value is in fp1, unless -msoft-float. */ -rtx +static rtx rs6000_function_value (const_tree valtype, const_tree fn_decl_or_type ATTRIBUTE_UNUSED, bool outgoing ATTRIBUTE_UNUSED) @@ -27078,7 +26868,7 @@ rs6000_libcall_value (enum machine_mode mode) We need r30 if -mminimal-toc was specified, and there are constant pool references. */ -bool +static bool rs6000_can_eliminate (const int from, const int to) { return (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM @@ -28205,6 +27995,7 @@ get_ppc476_thunk_name (char name[32]) /* This function emits the simple thunk routine that is used to preserve the link stack on the 476 cpu. */ +static void rs6000_code_end (void) ATTRIBUTE_UNUSED; static void rs6000_code_end (void) { -- 2.11.4.GIT