Commit 1acf0246 by Bill Seurer Committed by Bill Seurer

[PATCH, rs6000] Split up rs6000.c.

The source file rs6000.c has grown to unreasonable size and is being
split up into several smaller source files.  This should improve
compilation speed for building gcc.

This is the second of several patches to do this and moves most of the
function call and builtin code to a new source file.

Bootstrapped and tested on powerpc64le-unknown-linux-gnu and
powerpc64-unknown-linux-gnu with no regressions.  Is this ok for trunk?


2019-07-17  Bill Seurer  <seurer@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (builtin_description, cpu_is_info,
	cpu_supports_info, builtin_hash_struct, builtin_hasher,
	builtin_hash_table, rs6000_builtin_info_type, rs6000_builtin_info,
	rs6000_aggregate_candidate, rs6000_discover_homogeneous_aggregate,
	rs6000_return_in_memory, rs6000_return_in_msb, call_ABI_of_interest,
	init_cumulative_args, rs6000_promote_function_mode,
	rs6000_must_pass_in_stack, is_complex_IBM_long_double,
	abi_v4_pass_in_fpr, rs6000_function_arg_padding,
	rs6000_function_arg_boundary, rs6000_parm_offset,
	rs6000_parm_start, rs6000_arg_size,
	rs6000_darwin64_record_arg_advance_flush,
	rs6000_darwin64_record_arg_advance_recurse,
	rs6000_darwin64_struct_check_p, rs6000_function_arg_advance_1,
	rs6000_function_arg_advance, rs6000_darwin64_record_arg_flush,
	rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
	rs6000_mixed_function_arg, rs6000_psave_function_arg,
	rs6000_finish_function_arg, rs6000_function_arg,
	rs6000_arg_partial_bytes, rs6000_pass_by_reference,
	rs6000_parm_needs_stack, rs6000_function_parms_need_stack,
	rs6000_reg_parm_stack_space, rs6000_move_block_from_reg,
	setup_incoming_varargs, rs6000_build_builtin_va_list, rs6000_va_start,
	rs6000_gimplify_va_arg, def_builtin, bdesc_3arg, bdesc_dst,
	bdesc_2arg, bdesc_altivec_preds, bdesc_abs, bdesc_1arg, bdesc_0arg,
	bdesc_htm, rs6000_overloaded_builtin_p, rs6000_overloaded_builtin_name,
	rs6000_expand_zeroop_builtin, rs6000_expand_mtfsf_builtin,
	rs6000_expand_mtfsb_builtin, rs6000_expand_set_fpscr_rn_builtin,
	rs6000_expand_set_fpscr_drn_builtin, rs6000_expand_unop_builtin,
	altivec_expand_abs_builtin, rs6000_expand_binop_builtin,
	altivec_expand_predicate_builtin, swap_endian_selector_for_mode,
	altivec_expand_lv_builtin, altivec_expand_stxvl_builtin,
	altivec_expand_stv_builtin, htm_spr_num, rs6000_htm_spr_icode,
	htm_expand_builtin, cpu_expand_builtin, rs6000_expand_ternop_builtin,
	altivec_expand_dst_builtin, altivec_expand_vec_init_builtin,
	get_element_number, altivec_expand_vec_set_builtin,
	altivec_expand_vec_ext_builtin, altivec_expand_builtin,
	rs6000_builtin_is_supported_p, rs6000_invalid_builtin,
	rs6000_fold_builtin, rs6000_builtin_valid_without_lhs,
	fold_build_vec_cmp, fold_compare_helper, fold_mergehl_helper,
	fold_mergeeo_helper, rs6000_gimple_fold_builtin,
	rs6000_expand_builtin, rs6000_vector_type,
	rs6000_init_builtins, rs6000_builtin_decl, altivec_init_builtins,
	htm_init_builtins, builtin_function_type, rs6000_common_init_builtins,
	rs6000_internal_arg_pointer, rs6000_output_mi_thunk): Move
	to rs6000-call.c.
	* config/rs6000/rs6000-call.c (builtin_description, cpu_is_info,
	cpu_supports_info, builtin_hash_struct, builtin_hasher,
	builtin_hash_table, rs6000_builtin_info_type, rs6000_builtin_info,
	rs6000_aggregate_candidate, rs6000_discover_homogeneous_aggregate,
	rs6000_return_in_memory, rs6000_return_in_msb, call_ABI_of_interest,
	init_cumulative_args, rs6000_promote_function_mode,
	rs6000_must_pass_in_stack, is_complex_IBM_long_double,
	abi_v4_pass_in_fpr, rs6000_function_arg_padding,
	rs6000_function_arg_boundary, rs6000_parm_offset,
	rs6000_parm_start, rs6000_arg_size,
	rs6000_darwin64_record_arg_advance_flush,
	rs6000_darwin64_record_arg_advance_recurse,
	rs6000_darwin64_struct_check_p, rs6000_function_arg_advance_1,
	rs6000_function_arg_advance, rs6000_darwin64_record_arg_flush,
	rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
	rs6000_mixed_function_arg, rs6000_psave_function_arg,
	rs6000_finish_function_arg, rs6000_function_arg,
	rs6000_arg_partial_bytes, rs6000_pass_by_reference,
	rs6000_parm_needs_stack, rs6000_function_parms_need_stack,
	rs6000_reg_parm_stack_space, rs6000_move_block_from_reg,
	setup_incoming_varargs, rs6000_build_builtin_va_list, rs6000_va_start,
	rs6000_gimplify_va_arg, def_builtin, bdesc_3arg, bdesc_dst,
	bdesc_2arg, bdesc_altivec_preds, bdesc_abs, bdesc_1arg, bdesc_0arg,
	bdesc_htm, rs6000_overloaded_builtin_p, rs6000_overloaded_builtin_name,
	rs6000_expand_zeroop_builtin, rs6000_expand_mtfsf_builtin,
	rs6000_expand_mtfsb_builtin, rs6000_expand_set_fpscr_rn_builtin,
	rs6000_expand_set_fpscr_drn_builtin, rs6000_expand_unop_builtin,
	altivec_expand_abs_builtin, rs6000_expand_binop_builtin,
	altivec_expand_predicate_builtin, swap_endian_selector_for_mode,
	altivec_expand_lv_builtin, altivec_expand_stxvl_builtin,
	altivec_expand_stv_builtin, htm_spr_num, rs6000_htm_spr_icode,
	htm_expand_builtin, cpu_expand_builtin, rs6000_expand_ternop_builtin,
	altivec_expand_dst_builtin, altivec_expand_vec_init_builtin,
	get_element_number, altivec_expand_vec_set_builtin,
	altivec_expand_vec_ext_builtin, altivec_expand_builtin,
	rs6000_builtin_is_supported_p, rs6000_invalid_builtin,
	rs6000_fold_builtin, rs6000_builtin_valid_without_lhs,
	fold_build_vec_cmp, fold_compare_helper, fold_mergehl_helper,
	fold_mergeeo_helper, rs6000_gimple_fold_builtin,
	rs6000_expand_builtin, rs6000_vector_type,
	rs6000_init_builtins, rs6000_builtin_decl, altivec_init_builtins,
	htm_init_builtins, builtin_function_type, rs6000_common_init_builtins,
	rs6000_internal_arg_pointer, rs6000_output_mi_thunk: Move
	to here from rs6000.c.
	* config/rs6000/rs6000-internal.h: (rs6000_darwin64_struct_check_p,
	rs6000_discover_homogeneous_aggregate, rs6000_output_mi_thunk,
	rs6000_output_addr_const_extra, rs6000_gimple_fold_builtin,
	rs6000_invalid_builtin, rs6000_build_builtin_va_list, rs6000_va_start,
	rs6000_gimplify_va_arg, rs6000_promote_function_mode,
	rs6000_return_in_memory, rs6000_return_in_msb,
	rs6000_pass_by_reference, setup_incoming_varargs,
	rs6000_function_arg_boundary, rs6000_must_pass_in_stack,
	rs6000_arg_partial_bytes, rs6000_function_arg_advance,
	rs6000_function_arg_padding, rs6000_function_arg,
	rs6000_darwin64_record_arg, rs6000_internal_arg_pointer,
	rs6000_init_builtins, rs6000_builtin_decl, rs6000_expand_builtin,
	rs6000_fold_builtin, rs6000_passes_ieee128, rs6000_passes_float,
	rs6000_passes_long_double, rs6000_passes_vector,
	rs6000_returns_struct, cpu_builtin_p, tree builtin_mode_to_type,
	altivec_builtin_mask_for_load) Add declarations.
	* config/rs6000/t-rs6000: Add new source file rs6000-call.c.
	* config/config.gcc: Add new source file rs6000-call.c to garbage
	collector and extra_objs.

From-SVN: r273607
parent 192ece9e
2019-07-19 Bill Seurer <seurer@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (builtin_description, cpu_is_info,
cpu_supports_info, builtin_hash_struct, builtin_hasher,
builtin_hash_table, rs6000_builtin_info_type, rs6000_builtin_info,
rs6000_aggregate_candidate, rs6000_discover_homogeneous_aggregate,
rs6000_return_in_memory, rs6000_return_in_msb, call_ABI_of_interest,
init_cumulative_args, rs6000_promote_function_mode,
rs6000_must_pass_in_stack, is_complex_IBM_long_double,
abi_v4_pass_in_fpr, rs6000_function_arg_padding,
rs6000_function_arg_boundary, rs6000_parm_offset,
rs6000_parm_start, rs6000_arg_size,
rs6000_darwin64_record_arg_advance_flush,
rs6000_darwin64_record_arg_advance_recurse,
rs6000_darwin64_struct_check_p, rs6000_function_arg_advance_1,
rs6000_function_arg_advance, rs6000_darwin64_record_arg_flush,
rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
rs6000_mixed_function_arg, rs6000_psave_function_arg,
rs6000_finish_function_arg, rs6000_function_arg,
rs6000_arg_partial_bytes, rs6000_pass_by_reference,
rs6000_parm_needs_stack, rs6000_function_parms_need_stack,
rs6000_reg_parm_stack_space, rs6000_move_block_from_reg,
setup_incoming_varargs, rs6000_build_builtin_va_list, rs6000_va_start,
rs6000_gimplify_va_arg, def_builtin, bdesc_3arg, bdesc_dst,
bdesc_2arg, bdesc_altivec_preds, bdesc_abs, bdesc_1arg, bdesc_0arg,
bdesc_htm, rs6000_overloaded_builtin_p, rs6000_overloaded_builtin_name,
rs6000_expand_zeroop_builtin, rs6000_expand_mtfsf_builtin,
rs6000_expand_mtfsb_builtin, rs6000_expand_set_fpscr_rn_builtin,
rs6000_expand_set_fpscr_drn_builtin, rs6000_expand_unop_builtin,
altivec_expand_abs_builtin, rs6000_expand_binop_builtin,
altivec_expand_predicate_builtin, swap_endian_selector_for_mode,
altivec_expand_lv_builtin, altivec_expand_stxvl_builtin,
altivec_expand_stv_builtin, htm_spr_num, rs6000_htm_spr_icode,
htm_expand_builtin, cpu_expand_builtin, rs6000_expand_ternop_builtin,
altivec_expand_dst_builtin, altivec_expand_vec_init_builtin,
get_element_number, altivec_expand_vec_set_builtin,
altivec_expand_vec_ext_builtin, altivec_expand_builtin,
rs6000_builtin_is_supported_p, rs6000_invalid_builtin,
rs6000_fold_builtin, rs6000_builtin_valid_without_lhs,
fold_build_vec_cmp, fold_compare_helper, fold_mergehl_helper,
fold_mergeeo_helper, rs6000_gimple_fold_builtin,
rs6000_expand_builtin, rs6000_vector_type,
rs6000_init_builtins, rs6000_builtin_decl, altivec_init_builtins,
htm_init_builtins, builtin_function_type, rs6000_common_init_builtins,
rs6000_internal_arg_pointer, rs6000_output_mi_thunk): Move
to rs6000-call.c.
* config/rs6000/rs6000-call.c (builtin_description, cpu_is_info,
cpu_supports_info, builtin_hash_struct, builtin_hasher,
builtin_hash_table, rs6000_builtin_info_type, rs6000_builtin_info,
rs6000_aggregate_candidate, rs6000_discover_homogeneous_aggregate,
rs6000_return_in_memory, rs6000_return_in_msb, call_ABI_of_interest,
init_cumulative_args, rs6000_promote_function_mode,
rs6000_must_pass_in_stack, is_complex_IBM_long_double,
abi_v4_pass_in_fpr, rs6000_function_arg_padding,
rs6000_function_arg_boundary, rs6000_parm_offset,
rs6000_parm_start, rs6000_arg_size,
rs6000_darwin64_record_arg_advance_flush,
rs6000_darwin64_record_arg_advance_recurse,
rs6000_darwin64_struct_check_p, rs6000_function_arg_advance_1,
rs6000_function_arg_advance, rs6000_darwin64_record_arg_flush,
rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
rs6000_mixed_function_arg, rs6000_psave_function_arg,
rs6000_finish_function_arg, rs6000_function_arg,
rs6000_arg_partial_bytes, rs6000_pass_by_reference,
rs6000_parm_needs_stack, rs6000_function_parms_need_stack,
rs6000_reg_parm_stack_space, rs6000_move_block_from_reg,
setup_incoming_varargs, rs6000_build_builtin_va_list, rs6000_va_start,
rs6000_gimplify_va_arg, def_builtin, bdesc_3arg, bdesc_dst,
bdesc_2arg, bdesc_altivec_preds, bdesc_abs, bdesc_1arg, bdesc_0arg,
bdesc_htm, rs6000_overloaded_builtin_p, rs6000_overloaded_builtin_name,
rs6000_expand_zeroop_builtin, rs6000_expand_mtfsf_builtin,
rs6000_expand_mtfsb_builtin, rs6000_expand_set_fpscr_rn_builtin,
rs6000_expand_set_fpscr_drn_builtin, rs6000_expand_unop_builtin,
altivec_expand_abs_builtin, rs6000_expand_binop_builtin,
altivec_expand_predicate_builtin, swap_endian_selector_for_mode,
altivec_expand_lv_builtin, altivec_expand_stxvl_builtin,
altivec_expand_stv_builtin, htm_spr_num, rs6000_htm_spr_icode,
htm_expand_builtin, cpu_expand_builtin, rs6000_expand_ternop_builtin,
altivec_expand_dst_builtin, altivec_expand_vec_init_builtin,
get_element_number, altivec_expand_vec_set_builtin,
altivec_expand_vec_ext_builtin, altivec_expand_builtin,
rs6000_builtin_is_supported_p, rs6000_invalid_builtin,
rs6000_fold_builtin, rs6000_builtin_valid_without_lhs,
fold_build_vec_cmp, fold_compare_helper, fold_mergehl_helper,
fold_mergeeo_helper, rs6000_gimple_fold_builtin,
rs6000_expand_builtin, rs6000_vector_type,
rs6000_init_builtins, rs6000_builtin_decl, altivec_init_builtins,
htm_init_builtins, builtin_function_type, rs6000_common_init_builtins,
rs6000_internal_arg_pointer, rs6000_output_mi_thunk: Move
to here from rs6000.c.
* config/rs6000/rs6000-internal.h: (rs6000_darwin64_struct_check_p,
rs6000_discover_homogeneous_aggregate, rs6000_output_mi_thunk,
rs6000_output_addr_const_extra, rs6000_gimple_fold_builtin,
rs6000_invalid_builtin, rs6000_build_builtin_va_list, rs6000_va_start,
rs6000_gimplify_va_arg, rs6000_promote_function_mode,
rs6000_return_in_memory, rs6000_return_in_msb,
rs6000_pass_by_reference, setup_incoming_varargs,
rs6000_function_arg_boundary, rs6000_must_pass_in_stack,
rs6000_arg_partial_bytes, rs6000_function_arg_advance,
rs6000_function_arg_padding, rs6000_function_arg,
rs6000_darwin64_record_arg, rs6000_internal_arg_pointer,
rs6000_init_builtins, rs6000_builtin_decl, rs6000_expand_builtin,
rs6000_fold_builtin, rs6000_passes_ieee128, rs6000_passes_float,
rs6000_passes_long_double, rs6000_passes_vector,
rs6000_returns_struct, cpu_builtin_p, tree builtin_mode_to_type,
altivec_builtin_mask_for_load) Add declarations.
* config/rs6000/t-rs6000: Add new source file rs6000-call.c.
* config/config.gcc: Add new source file rs6000-call.c to garbage
collector and extra_objs.
2019-07-19 Jeff Law <law@redhat.com>
* tree-ssa-dse.c (initialize_ao_ref_for_dse): Handle
......
......@@ -499,7 +499,7 @@ or1k*-*-*)
;;
powerpc*-*-*)
cpu_type=rs6000
extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o rs6000-call.o"
extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
......@@ -513,7 +513,7 @@ powerpc*-*-*)
;;
esac
extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c"
target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
;;
pru-*-*)
cpu_type=pru
......@@ -525,8 +525,8 @@ riscv*)
;;
rs6000*-*-*)
extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c"
extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o rs6000-call.o"
target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
;;
sparc*-*-*)
cpu_type=sparc
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -99,6 +99,7 @@ extern const char * rs6000_machine_from_flags (void);
extern void emit_asm_machine (void);
extern bool rs6000_global_entry_point_prologue_needed_p (void);
extern bool rs6000_keep_leaf_when_profiled (void);
extern void rs6000_live_on_entry (bitmap regs);
/* Return true if the OFFSET is valid for the quad address instructions that
use d-form (register + offset) addressing. */
......@@ -123,4 +124,76 @@ extern vec<branch_island, va_gc> *branch_islands;
#endif
/* Declare functions in rs6000-call.c or called in rs6000.c
from rs6000-call.c */
extern int rs6000_darwin64_struct_check_p (machine_mode mode, const_tree type);
extern bool rs6000_discover_homogeneous_aggregate (machine_mode mode,
const_tree type,
machine_mode *elt_mode,
int *n_elts);
extern void rs6000_output_mi_thunk (FILE *file,
tree thunk_fndecl ATTRIBUTE_UNUSED,
HOST_WIDE_INT delta,
HOST_WIDE_INT vcall_offset,
tree function);
extern bool rs6000_output_addr_const_extra (FILE *file, rtx x);
extern bool rs6000_gimple_fold_builtin (gimple_stmt_iterator *gsi);
extern void rs6000_invalid_builtin (enum rs6000_builtins fncode);
extern tree rs6000_build_builtin_va_list (void);
extern void rs6000_va_start (tree valist, rtx nextarg);
extern tree rs6000_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
gimple_seq *post_p);
extern machine_mode rs6000_promote_function_mode (const_tree type ATTRIBUTE_UNUSED,
machine_mode mode,
int *punsignedp ATTRIBUTE_UNUSED,
const_tree, int);
extern bool rs6000_return_in_memory (const_tree type,
const_tree fntype ATTRIBUTE_UNUSED);
extern bool rs6000_return_in_msb (const_tree valtype);
extern bool rs6000_pass_by_reference (cumulative_args_t cum ATTRIBUTE_UNUSED,
machine_mode mode, const_tree type,
bool named ATTRIBUTE_UNUSED);
extern void setup_incoming_varargs (cumulative_args_t cum, machine_mode mode,
tree type, int *pretend_size ATTRIBUTE_UNUSED,
int no_rtl);
extern unsigned int rs6000_function_arg_boundary (machine_mode mode,
const_tree type);
extern bool rs6000_must_pass_in_stack (machine_mode mode, const_tree type);
extern int rs6000_arg_partial_bytes (cumulative_args_t cum_v,
machine_mode mode, tree type,
bool named);
extern void rs6000_function_arg_advance (cumulative_args_t cum,
machine_mode mode,
const_tree type, bool named);
extern pad_direction rs6000_function_arg_padding (machine_mode mode,
const_tree type);
extern rtx rs6000_function_arg (cumulative_args_t cum_v, machine_mode mode,
const_tree type, bool named);
extern rtx rs6000_darwin64_record_arg (CUMULATIVE_ARGS *, const_tree,
bool, bool);
extern rtx rs6000_internal_arg_pointer (void);
extern void rs6000_init_builtins (void);
extern tree rs6000_builtin_decl (unsigned code,
bool initialize_p ATTRIBUTE_UNUSED);
extern rtx rs6000_expand_builtin (tree exp, rtx target,
rtx subtarget ATTRIBUTE_UNUSED,
machine_mode mode ATTRIBUTE_UNUSED,
int ignore ATTRIBUTE_UNUSED);
extern tree rs6000_fold_builtin (tree fndecl ATTRIBUTE_UNUSED,
int n_args ATTRIBUTE_UNUSED,
tree *args ATTRIBUTE_UNUSED,
bool ignore ATTRIBUTE_UNUSED);
#if TARGET_ELF
extern bool rs6000_passes_ieee128;
#endif
extern bool rs6000_passes_float;
extern bool rs6000_passes_long_double;
extern bool rs6000_passes_vector;
extern bool rs6000_returns_struct;
extern bool cpu_builtin_p;
extern GTY(()) tree builtin_mode_to_type[MAX_MACHINE_MODE][2];
extern GTY(()) tree altivec_builtin_mask_for_load;
#endif
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -43,6 +43,10 @@ rs6000-logue.o: $(srcdir)/config/rs6000/rs6000-logue.c
$(COMPILE) $<
$(POSTCOMPILE)
rs6000-call.o: $(srcdir)/config/rs6000/rs6000-call.c
$(COMPILE) $<
$(POSTCOMPILE)
$(srcdir)/config/rs6000/rs6000-tables.opt: $(srcdir)/config/rs6000/genopt.sh \
$(srcdir)/config/rs6000/rs6000-cpus.def
$(SHELL) $(srcdir)/config/rs6000/genopt.sh $(srcdir)/config/rs6000 > \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment