GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
class | du_head |
struct | du_chain |
struct | operand_rr_info |
struct | insn_rr_info |
Typedefs | |
typedef class du_head * | du_head_p |
Functions | |
void | regrename_init (bool) |
void | regrename_finish (void) |
void | regrename_analyze (bitmap, bool=true) |
du_head_p | regrename_chain_from_id (unsigned int) |
int | find_rename_reg (du_head_p, enum reg_class, HARD_REG_SET *, int, bool) |
bool | regrename_do_replace (du_head_p, int) |
reg_class | regrename_find_superclass (du_head_p, int *, HARD_REG_SET *) |
Variables | |
vec< insn_rr_info > | insn_rr |
|
extern |
For the chain THIS_HEAD, compute and return the best register to rename to. SUPER_CLASS is the superunion of register classes in the chain. UNAVAILABLE is a set of registers that cannot be used. OLD_REG is the register currently used for the chain. BEST_RENAME controls whether the register chosen must be better than the current one or just respect the given constraint.
References check_new_reg_p(), DEBUG_INSN_P, ggc_alloc(), merge_overlapping_regs(), noop_move_p(), reg_class_contents, targetm, TEST_HARD_REG_BIT, and tick.
Referenced by rename_chains().
Analyze the current function and build chains for renaming. If INCLUDE_ALL_BLOCKS_P is set to true, process all blocks, ignoring BB_DISABLE_SCHEDULE. The default value is true.
References basic_block_def::aux, BASIC_BLOCK_FOR_FN, bb_rename_info::bb, bitmap_bit_p, bitmap_clear(), bitmap_copy(), bitmap_default_obstack, bitmap_initialize(), build_def_use(), cfun, current_id, df_get_live_in(), df_get_live_out(), dump_def_use_chain(), dump_file, EXECUTE_IF_SET_IN_BITMAP, FOR_BB_INSNS, FOR_EACH_BB_FN, FOR_EACH_EDGE, free(), ggc_alloc(), i, id_to_chain, basic_block_def::index, init_rename_info(), insn_rr, INSN_UID(), last_basic_block_for_fn, merge_chains(), n_basic_blocks_for_fn, NULL, insn_rr_info::op_info, open_chains, open_chains_set, pre_and_rev_post_order_compute(), basic_block_def::preds, range_overlaps_hard_reg_set_p(), reg_names, REG_SET_TO_HARD_REG_SET, regrename_chain_from_id(), set_incoming_from_chain(), and basic_block_def::succs.
Referenced by regrename_optimize().
Return the chain corresponding to id number ID. Take into account that chains may have been merged.
References ggc_alloc(), du_head::id, and id_to_chain.
Referenced by merge_overlapping_regs(), and regrename_analyze().
|
extern |
Iterate over elements in the chain HEAD in order to: 1. Count number of uses, storing it in *PN_USES. 2. Narrow the set of registers we can use for renaming, adding unavailable registers to *PUNAVAILABLE, which must be initialized by the caller. 3. Compute the superunion of register classes in this chain and return it.
References DEBUG_INSN_P, head::first, ggc_alloc(), and reg_class_superunion.
Referenced by rename_chains().
Free all global data used by the register renamer.
References free_chain_data(), ggc_alloc(), insn_rr, NULL, and rename_obstack.
Referenced by regrename_optimize().
Initialize the register renamer. If INSN_INFO is true, ensure that insn_rr is nonnull.
References gcc_obstack_init, get_max_uid(), insn_rr, and rename_obstack.
Referenced by regrename_optimize().
|
extern |
If nonnull, the code calling into the register renamer requested information about insn operands, and we store it here.
Referenced by build_def_use(), regrename_analyze(), regrename_finish(), and regrename_init().