GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | hard_reg_set_container |
struct | hard_reg_set_iterator |
struct | target_hard_regs |
Typedefs | |
typedef unsigned HOST_WIDEST_FAST_INT | HARD_REG_ELT_TYPE |
typedef HARD_REG_ELT_TYPE | HARD_REG_SET [HARD_REG_SET_LONGS] |
Functions | |
static bool | hard_reg_set_subset_p () |
static bool | hard_reg_set_equal_p () |
static bool | hard_reg_set_intersect_p () |
static bool | hard_reg_set_empty_p () |
static void | hard_reg_set_iter_init (hard_reg_set_iterator *iter, HARD_REG_SET set, unsigned min, unsigned *regno) |
static bool | hard_reg_set_iter_set () |
static void | hard_reg_set_iter_next () |
Variables | |
char | global_regs [FIRST_PSEUDO_REGISTER] |
struct target_hard_regs | default_target_hard_regs |
struct target_hard_regs * | this_target_hard_regs |
const char * | reg_class_names [] |
typedef unsigned HOST_WIDEST_FAST_INT HARD_REG_ELT_TYPE |
Define the type of a set of hard registers.
HARD_REG_ELT_TYPE is a typedef of the unsigned integral type which will be used for hard reg sets, either alone or in an array. If HARD_REG_SET is a macro, its definition is HARD_REG_ELT_TYPE, and it has enough bits to represent all the target machine's hard registers. Otherwise, it is a typedef for a suitably sized array of HARD_REG_ELT_TYPEs. HARD_REG_SET_LONGS is defined as how many. Note that lots of code assumes that the first part of a regset is the same format as a HARD_REG_SET. To help make sure this is true, we only try the widest fast integer mode (HOST_WIDEST_FAST_INT) instead of all the smaller types. This approach loses only if there are very few registers and then only in the few cases where we have an array of HARD_REG_SETs, so it needn't be as complex as it used to be.
typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS] |
|
inlinestatic |
Referenced by add_allocno_hard_regs(), assign_parm_setup_reg(), empty_profitable_hard_regs(), form_allocno_hard_regs_nodes_forest(), setup_class_subset_and_memory_move_costs(), setup_class_translate_array(), setup_pressure_classes(), setup_reg_class_relations(), setup_reg_subclasses(), and spill_pseudos().
|
inlinestatic |
|
inlinestatic |
Referenced by add_allocno_hard_regs_to_forest(), assign_hard_reg(), collect_allocno_hard_regs_cover(), init_reg_sets_1(), push_allocno_to_stack(), reg_classes_intersect_p(), requires_stack_frame_p(), resource_conflicts_p(), setup_left_conflict_sizes_p(), setup_reg_class_relations(), and thread_prologue_and_epilogue_insns().
|
inlinestatic |
The implementation of the iterator functions is fully analogous to the bitmap iterators.
References hard_reg_set_iterator::bits, hard_reg_set_iterator::length, hard_reg_set_iterator::pelt, and hard_reg_set_iterator::word_no.
|
inlinestatic |
References hard_reg_set_iterator::bits.
|
inlinestatic |
|
inlinestatic |
Referenced by add_allocno_hard_regs_to_forest(), assign_hard_reg(), choose_btr(), collect_allocno_hard_regs_cover(), fast_allocation(), find_hard_regno_for(), in_class_p(), inherit_in_ebb(), init_reg_sets_1(), process_alt_operands(), reg_class_subset_p(), setup_allocno_and_important_classes(), setup_class_subset_and_memory_move_costs(), setup_left_conflict_sizes_p(), setup_pressure_classes(), setup_reg_class_relations(), setup_reg_subclasses(), setup_regno_cost_classes_by_aclass(), setup_regno_cost_classes_by_mode(), and update_left_conflict_sizes_p().
struct target_hard_regs default_target_hard_regs |
char global_regs[FIRST_PSEUDO_REGISTER] |
Define some standard sets of registers.
Indexed by hard register number, contains 1 for registers that are being used for global register decls. These must be exempt from ordinary flow analysis and are also considered fixed.
Indexed by hard register number, contains 1 for registers that are being used for global register decls. These must be exempt from ordinary flow analysis and are also considered fixed.
Referenced by can_combine_p(), can_move_insns_across(), check_live_1(), check_new_reg_p(), copy_value(), deletable_insn_p(), deps_analyze_insn(), df_get_call_refs(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), df_lr_local_compute(), distribute_notes(), globalize_reg(), hash_rtx_cb(), init_reg_sets_1(), init_regs_for_mode(), init_resource_info(), mark_referenced_resources(), mark_target_live_regs(), mark_unavailable_hard_regs(), only_leaf_regs_used(), peep2_find_free_register(), reload_combine_recognize_pattern(), rename_chains(), and update_live_1().
const char* reg_class_names[] |
Vector indexed by reg class giving its name.
Array containing all of the register class names.
Referenced by assign_by_spills(), calculate_bb_reg_pressure(), calculate_loop_reg_pressure(), change_class(), debug_reload_to_stream(), dump_def_use_chain(), dump_reg_info(), find_costs_and_classes(), inherit_reload_reg(), lra_create_new_reg_with_unique_value(), model_dump_pressure_points(), model_dump_pressure_summary(), model_excess_cost(), model_recompute(), model_record_pressures(), print_allocno_costs(), print_curr_reg_pressure(), print_loop_title(), print_pseudo_costs(), print_translated_classes(), print_unform_and_important_classes(), schedule_insn(), setup_allocno_available_regs_num(), setup_preferred_alternate_classes_for_new_pseudos(), spill_failure(), and split_reg().
struct target_hard_regs* this_target_hard_regs |