|
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, find_rename_reg(), merge_overlapping_regs(), du_chain::next_use, noop_move_p(), reg_class_contents, targetm, TEST_HARD_REG_BIT, and tick.
Referenced by find_rename_reg(), and 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, basic_block_def::flags, FOR_BB_INSNS, FOR_EACH_BB_FN, FOR_EACH_EDGE, free(), i, du_head::id, id_to_chain, bb_rename_info::incoming_open_chains_set, basic_block_def::index, init_rename_info(), insn_rr, INSN_UID(), last_basic_block_for_fn, merge_chains(), n_basic_blocks_for_fn, du_head::nregs, NULL, insn_rr_info::op_info, open_chains, bb_rename_info::open_chains_set, 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, du_head::regno, regrename_analyze(), regrename_chain_from_id(), set_incoming_from_chain(), and basic_block_def::succs.
Referenced by regrename_analyze(), and regrename_optimize().
|
extern |
Return the chain corresponding to id number ID. Take into account that chains may have been merged.
References id_to_chain, and regrename_chain_from_id().
Referenced by merge_overlapping_regs(), regrename_analyze(), and regrename_chain_from_id().
References regrename_do_replace(), and regrename_find_superclass().
|
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, reg_class_contents, reg_class_superunion, and regrename_find_superclass().
Referenced by regrename_do_replace(), regrename_find_superclass(), and rename_chains().
|
extern |
Free all global data used by the register renamer.
References free_chain_data(), insn_rr, NULL, regrename_finish(), and rename_obstack.
Referenced by regrename_finish(), and regrename_optimize().
|
extern |
Initialize the register renamer. If INSN_INFO is true, ensure that insn_rr is nonnull.
References gcc_obstack_init, get_max_uid(), insn_rr, regrename_init(), and rename_obstack.
Referenced by regrename_init(), and 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().