GCC Middle and Back End API Reference
target.h File Reference
#include "insn-modes.h"
#include "insn-codes.h"
#include "target.def"
Include dependency graph for target.h:

Go to the source code of this file.

Data Structures

union  cumulative_args_t
struct  secondary_reload_info
struct  asm_int_op

Macros

#define DEFHOOKPOD(NAME, DOC, TYPE, INIT)   TYPE NAME;
#define DEFHOOK(NAME, DOC, TYPE, PARAMS, INIT)   TYPE (* NAME) PARAMS;
#define DEFHOOK_UNDOC   DEFHOOK
#define HOOKSTRUCT(FRAGMENT)   FRAGMENT

Typedefs

typedef int(* print_switch_fn_type )(print_switch_type, const char *)
typedef struct
secondary_reload_info 
secondary_reload_info

Enumerations

enum  print_switch_type {
  SWITCH_TYPE_PASSED, SWITCH_TYPE_ENABLED, SWITCH_TYPE_DESCRIPTIVE, SWITCH_TYPE_LINE_START,
  SWITCH_TYPE_LINE_END
}
enum  vect_cost_for_stmt {
  scalar_stmt, scalar_load, scalar_store, vector_stmt,
  vector_load, unaligned_load, unaligned_store, vector_store,
  vec_to_scalar, scalar_to_vec, cond_branch_not_taken, cond_branch_taken,
  vec_perm, vec_promote_demote, vec_construct
}
enum  vect_cost_model_location { vect_prologue = 0, vect_body = 1, vect_epilogue = 2 }

Functions

int elf_record_gcc_switches (print_switch_type type, const char *)
bool target_default_pointer_address_modes_p (void)
tree stmt_vectype (struct _stmt_vec_info *)
bool stmt_in_inner_loop_p (struct _stmt_vec_info *)
static CUMULATIVE_ARGS * get_cumulative_args ()
static cumulative_args_t pack_cumulative_args ()

Variables

struct gcc_target targetm

Macro Definition Documentation

#define DEFHOOK (   NAME,
  DOC,
  TYPE,
  PARAMS,
  INIT 
)    TYPE (* NAME) PARAMS;
#define DEFHOOK_UNDOC   DEFHOOK
#define DEFHOOKPOD (   NAME,
  DOC,
  TYPE,
  INIT 
)    TYPE NAME;
The target structure.  This holds all the backend hooks.   
#define HOOKSTRUCT (   FRAGMENT)    FRAGMENT
HOOKSTRUCT(FRAGMENT): Declarator fragments to encapsulate all the
   members into a struct gcc_target, which in turn contains several
   sub-structs.   

Typedef Documentation

typedef int(* print_switch_fn_type)(print_switch_type, const char *)
The struct used by the secondary_reload target hook.   

Enumeration Type Documentation

Types used by the record_gcc_switches() target function.   
Enumerator:
SWITCH_TYPE_PASSED 
SWITCH_TYPE_ENABLED 
SWITCH_TYPE_DESCRIPTIVE 
SWITCH_TYPE_LINE_START 
SWITCH_TYPE_LINE_END 
Types of costs for vectorizer cost model.   
Enumerator:
scalar_stmt 
scalar_load 
scalar_store 
vector_stmt 
vector_load 
unaligned_load 
unaligned_store 
vector_store 
vec_to_scalar 
scalar_to_vec 
cond_branch_not_taken 
cond_branch_taken 
vec_perm 
vec_promote_demote 
vec_construct 
Separate locations for which the vectorizer cost model should
   track costs.   
Enumerator:
vect_prologue 
vect_body 
vect_epilogue 

Function Documentation

int elf_record_gcc_switches ( print_switch_type  type,
const char *   
)
An example implementation for ELF targets.  Defined in varasm.c   
static CUMULATIVE_ARGS* get_cumulative_args ( )
inlinestatic
bool stmt_in_inner_loop_p ( struct _stmt_vec_info )

Referenced by default_add_stmt_cost().

tree stmt_vectype ( struct _stmt_vec_info )
These are defined in tree-vect-stmts.c.   

Referenced by default_add_stmt_cost(), and record_stmt_cost().

bool target_default_pointer_address_modes_p ( void  )
Some places still assume that all pointer or address modes are the
   standard Pmode and ptr_mode.  These optimizations become invalid if
   the target actually supports multiple different modes.  For now,
   we disable such optimizations on such targets, using this function.   

References default_addr_space_address_mode(), default_addr_space_pointer_mode(), and targetm.

Referenced by find_base_term(), find_base_value(), nonzero_bits1(), num_sign_bit_copies1(), and simplify_unary_operation_1().


Variable Documentation

struct gcc_target targetm

Referenced by add_branch_dependences(), add_calling_convention_attribute(), add_ehspec_entry(), add_stmt_cost(), addr_for_mem_ref(), address_cost(), adjust_address_1(), adjust_mems(), adjust_priority(), advance_one_cycle(), advance_state(), aggregate_value_p(), allocate_initial_values(), analyze_function(), apply_args_size(), apply_replacement(), apply_result_size(), approx_reg_cost_1(), arithmetic_flags_clobber_p(), asan_emit_stack_protection(), asan_needs_local_alias(), assemble_constant_contents(), assemble_external_libcall(), assemble_integer(), assemble_name(), assemble_start_function(), assemble_trampoline_template(), assemble_variable(), assign_filter_values(), assign_parm_find_data_types(), assign_parm_find_entry_rtl(), assign_parm_setup_reg(), assign_parms(), assign_parms_augmented_arg_list(), assign_parms_setup_varargs(), assign_parms_unsplit_complex(), assign_spill_hard_regs(), avoid_constant_pool_reference(), avoid_likely_spilled_reg(), block_move_libcall_safe_for_call_parm(), branch_target_load_optimize(), build_cdtor(), build_cdtor_fns(), build_check_stmt(), build_common_builtin_nodes(), build_common_tree_nodes(), build_constant_desc(), build_pointer_type(), build_reference_type(), build_tm_load(), build_tm_store(), build_var(), builtin_vectorization_cost(), call_may_clobber_ref_p_1(), can_assign_to_reg_without_clobbers_p(), can_inline_edge_p(), can_move_insns_across(), can_store_by_pieces(), can_vec_perm_p(), cant_combine_insn_p(), case_values_threshold(), categorize_decl_for_section(), cfg_layout_can_duplicate_bb_p(), cgraph_build_static_cdtor_1(), check_and_process_move(), check_cond_move_block(), check_dependency(), choose_ready(), combine_reloads(), comp_type_attributes(), compile_file(), compress_float_constant(), compute_alignments(), compute_block_dependences(), compute_const_anchors(), compute_record_mode(), cond_exec_find_if_block(), conforming_compare(), const_ok_for_output_1(), convert_debug_memory_address(), convert_memory_address_addr_space(), convert_to_integer(), copy_blkmode_from_reg(), copy_blkmode_to_reg(), copy_cost(), create_check_block_twin(), create_cie_data(), create_pre_exit(), create_speculation_check(), cse_cc_succs(), cse_condition_code_reg(), cse_insn(), curr_insn_transform(), dbxout_begin_block(), dbxout_begin_prologue(), dbxout_common_check(), dbxout_end_block(), dbxout_expand_expr(), dbxout_function_end(), dbxout_init(), dbxout_stab_value_internal_label(), dbxout_stab_value_internal_label_diff(), dead_or_predicable(), debug_rli(), decide_unroll_runtime_iterations(), decide_unroll_stupid(), decl_attributes(), decl_binds_to_current_def_p(), decl_default_tls_model(), default_addr_space_legitimate_address_p(), default_addr_space_legitimize_address(), default_addr_space_valid_pointer_mode(), default_eh_return_filter_mode(), default_elf_asm_output_external(), default_elf_select_rtx_section(), default_encode_section_info(), default_file_start(), default_get_pch_validity(), default_globalize_decl_name(), default_mangle_assembler_name(), default_pch_valid_p(), default_pretend_outgoing_varargs_named(), default_select_rtx_section(), default_unique_section(), default_use_anchors_for_symbol_p(), define_builtin_macros_for_type_sizes(), dep_cost_1(), destroy_cost_data(), df_get_entry_block_def_set(), do_assemble_alias(), doloop_valid_p(), dump_tm_clone_pairs(), dw2_asm_output_data_sleb128(), dw2_asm_output_data_uleb128(), dw2_force_const_mem(), dwarf2out_do_frame(), dwarf2out_finish(), dwarf2out_frame_debug_cfa_expression(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_expr(), dwarf2out_frame_finish(), dwarf2out_source_line(), elf_record_gcc_switches(), eliminate_partially_redundant_load(), emit_call_1(), emit_cstore(), emit_input_reload_insns(), emit_library_call_value_1(), emit_move_insn(), emit_push_insn(), estimate_move_cost(), execute_cse_reciprocals(), execute_cse_reciprocals_1(), execute_cse_sincos(), execute_optimize_stdarg(), execute_warn_function_return(), expand_asm_operands(), expand_atomic_test_and_set(), expand_binop(), expand_builtin(), expand_builtin_adjust_trampoline(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_builtin_cexpi(), expand_builtin_eh_copy_values(), expand_builtin_eh_filter(), expand_builtin_extend_pointer(), expand_builtin_init_dwarf_reg_sizes(), expand_builtin_init_trampoline(), expand_builtin_saveregs(), expand_builtin_setjmp_receiver(), expand_builtin_setjmp_setup(), expand_builtin_va_copy(), expand_builtin_va_start(), expand_call(), expand_debug_expr(), expand_dw2_landing_pad_for_region(), expand_expr_addr_expr(), expand_expr_addr_expr_1(), expand_expr_real_1(), expand_expr_real_2(), expand_function_end(), expand_function_start(), expand_stack_alignment(), expand_thunk(), extract_bit_field_1(), final_end_function(), final_scan_insn(), final_start_function(), find_best_expr(), find_best_rename_reg(), find_comparisons_in_bb(), find_dummy_reload(), find_flags_uses_in_insn(), find_hard_regno_for(), find_if_header(), find_inc(), find_matches(), find_reg_offset_for_const(), find_reloads(), find_reloads_address(), find_reloads_address_part(), find_reloads_toplev(), find_reusable_reload(), finish_cost(), fold_builtin_call_array(), fold_builtin_cexp(), fold_builtin_sincos(), fold_call_expr(), fold_call_stmt(), fold_comparison(), follow_jumps(), force_const_mem(), forward_propagate_subreg(), free_topmost_backtrack_point(), function_attribute_inlinable_p(), function_section_1(), gate_compare_elim_after_reload(), gate_duplicate_computed_gotos(), gate_emutls(), gate_handle_machine_reorg(), gate_handle_reorder_blocks(), gate_handle_sched2(), gate_handle_var_tracking(), gate_ipa_cdtor_merge(), gen_eh_region(), gen_interclass_conv_libfunc(), gen_intraclass_conv_libfunc(), gen_libfunc(), gen_subprogram_die(), general_operand(), get_address_cost(), get_address_mode(), get_call_args(), get_constant_section(), get_emutls_init_templ_addr(), get_emutls_object_name(), get_emutls_object_type(), get_file_function_name(), get_memmodel(), get_named_section(), get_named_text_section(), get_reassociation_width(), get_section_anchor(), get_spec_check_type_for_insn(), get_variable_section(), get_vectype_for_scalar_type_and_size(), gimple_expand_cfg(), gimple_fold_call(), gimplify_parameters(), gimplify_va_arg_expr(), globalize_decl(), handle_dll_attribute(), hard_function_value(), hard_libcall_value(), hash_rtx_cb(), have_global_bss_p(), hook_pass_by_reference_must_pass_in_stack(), immediate_operand(), init_asm_output(), init_attributes(), init_cost(), init_eh(), init_elim_table(), init_eliminable_invariants(), init_ic_make_global_vars(), init_num_sign_bit_copies_in_rep(), init_optabs(), init_reg_sets_1(), init_varasm_once(), initialize_argument_information(), input_eh_regions(), instantiate_virtual_regs(), integer_asm_op(), invoke_aftermath_hooks(), invoke_dfa_lookahead_guard(), invoke_reorder_hooks(), invoke_set_current_function_hook(), ipa_passes(), ira(), ira_build_conflicts(), ira_setup_eliminable_regset(), keep_with_call_p(), layout_decl(), layout_type(), lhd_set_decl_assembler_name(), likely_spilled_retval_p(), loc_list_from_tree(), locate_and_pad_parm(), lto_cgraph_replace_node(), make_decl_rtl(), make_node_stat(), max_issue(), may_trap_p_1(), maybe_assemble_visibility(), maybe_select_cc_mode(), mem_loc_descriptor(), memory_address_addr_space(), memory_address_addr_space_p(), memory_move_cost(), mergeable_constant_section(), mergeable_string_section(), mode_dependent_address_p(), mode_for_array(), most_expensive_mult_to_index(), move_block_to_reg(), multiplier_allowed_in_address_p(), new_emutls_decl(), noce_get_condition(), noce_mem_write_may_trap_or_fault_p(), noce_process_if_block(), notice_global_symbol(), offsettable_address_addr_space_p(), ok_for_early_queue_removal(), omp_max_vf(), optimize_reg_copy_1(), optimize_stdarg_builtin(), option_affects_pch_p(), output_addr_const(), output_addr_table_entry(), output_address(), output_alternate_entry_point(), output_asm_insn(), output_call_frame_info(), output_comdat_type_unit(), output_constant(), output_constant_pool_1(), output_constant_pool_contents(), output_die_symbol(), output_eh_regions(), output_fde(), output_file_directive(), output_function_exception_table(), output_loc_operands(), output_macinfo(), output_object_block(), output_one_function_exception_table(), output_operand(), output_ttype(), pass_by_reference(), peep2_find_free_register(), place_field(), precompute_register_parameters(), bit_field_mode_iterator::prefer_smaller_modes(), prepare_call_address(), prepare_call_arguments(), prepare_cmp_insn(), prepare_float_lib_cmp(), process_alt_operands(), process_options(), produce_memory_decl_rtl(), profile_after_prologue(), profile_function(), promote_function_mode(), promote_mode(), propagate_rtx_1(), ps_has_conflicts(), push_reload(), push_secondary_reload(), ready_remove_first_dispatch(), recog_for_combine(), reference_callee_copied(), reg_loc_descriptor(), regclass_compatible_p(), register_move_cost(), reload(), reload_combine_recognize_pattern(), res_MII(), reset_sched_cycles_in_current_ebb(), resolve_unique_section(), rest_of_handle_final(), rest_of_handle_machine_reorg(), restore_last_backtrack_point(), restore_pattern(), rtl_for_decl_location(), rtx_cost(), rtx_equal_for_cselib_1(), rtx_renumbered_equal_p(), save_backtrack_point(), scan_one_insn(), sched_analyze_insn(), sched_extend_ready_list(), sched_extend_target(), sched_finish(), sched_finish_ready_list(), sched_init(), sched_speculate_insn(), schedule_block(), schedule_ebb(), secondary_reload_class(), sel_dfa_new_cycle(), sel_region_init(), sel_region_target_finish(), sel_target_adjust_priority(), self_referential_size(), sets_likely_spilled_1(), setup_reg_class_nregs(), setup_reg_equiv(), setup_reg_spill_flag(), shorten_branches(), simple_move_p(), simplify_operand_subreg(), sjlj_emit_dispatch_table(), small_register_class_p(), sms_schedule(), spill_pseudos(), split_complex_args(), split_complex_types(), stabilize_va_list_loc(), stack_protect_epilogue(), stack_protect_prologue(), stack_result(), std_gimplify_va_arg_expr(), store_expr(), streamer_get_builtin_tree(), streamer_write_builtin(), strict_memory_address_addr_space_p(), supportable_convert_operation(), switch_to_eh_frame_section(), switch_to_section(), target_canonicalize_comparison(), target_default_pointer_address_modes_p(), target_supports_section_anchors_p(), thread_prologue_and_epilogue_insns(), try_combine(), try_eliminate_compare(), try_optimize_cfg(), unpack_ts_function_decl_value_fields(), update_alignment_for_field(), update_eliminables(), update_equiv_regs(), update_reg_eliminate(), use_anchored_address(), use_blocks_for_decl_p(), use_register_for_decl(), valid_address_p(), varpool_assemble_decl(), vect_analyze_data_refs(), vect_analyze_loop(), vect_check_gather(), vect_get_load_cost(), vect_lanes_optab_supported_p(), vect_setup_realignment(), vect_slp_analyze_bb(), vect_supportable_dr_alignment(), vector_alignment_reachable_p(), vector_type_mode(), vectorizable_function(), vmsdbgout_begin_block(), vmsdbgout_end_block(), vmsdbgout_finish(), vmsdbgout_write_source_line(), want_pubnames(), warn_function_noreturn(), and write_symbol().