GCC Middle and Back End API Reference
regrename.h File Reference
This graph shows which files directly or indirectly include this file:

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_headdu_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_infoinsn_rr
 

Typedef Documentation

◆ du_head_p

Function Documentation

◆ find_rename_reg()

int find_rename_reg ( du_head_p this_head,
enum reg_class super_class,
HARD_REG_SET * unavailable,
int old_reg,
bool best_rename )
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().

◆ regrename_analyze()

◆ regrename_chain_from_id()

du_head_p regrename_chain_from_id ( unsigned int id)
extern
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().

◆ regrename_do_replace()

bool regrename_do_replace ( du_head_p ,
int  )
extern

◆ regrename_find_superclass()

reg_class regrename_find_superclass ( du_head_p head,
int * pn_uses,
HARD_REG_SET * punavailable )
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().

◆ regrename_finish()

void regrename_finish ( void )
extern
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().

◆ regrename_init()

void regrename_init ( bool insn_info)
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, and rename_obstack.

Referenced by regrename_optimize().

Variable Documentation

◆ insn_rr

vec<insn_rr_info> insn_rr
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().