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

struct  du_head
struct  du_chain
struct  operand_rr_info
struct  insn_rr_info

Typedefs

typedef struct du_headdu_head_p

Functions

void regrename_init (bool)
void regrename_finish (void)
void regrename_analyze (bitmap)
du_head_p regrename_chain_from_id (unsigned int)
int find_best_rename_reg (du_head_p, enum reg_class, HARD_REG_SET *, int)
void regrename_do_replace (du_head_p, int)

Variables

vec< insn_rr_infoinsn_rr

Typedef Documentation

typedef struct du_head* du_head_p

Function Documentation

int find_best_rename_reg ( du_head_p  this_head,
enum reg_class  super_class,
HARD_REG_SET unavailable,
int  old_reg 
)

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.

 Further narrow the set of registers we can use for renaming.
 If the chain needs a call-saved register, mark the call-used
 registers as unavailable.   
 Mark registers that overlap this chain's lifetime as unavailable.   
 Compute preferred rename class of super union of all the classes
 in the chain.   
 If PREFERRED_CLASS is not NO_REGS, we iterate in the first pass
 over registers that belong to PREFERRED_CLASS and try to find the
 best register within the class.  If that failed, we iterate in
 the second pass over registers that don't belong to the class.
 If PREFERRED_CLASS is NO_REGS, we iterate over all registers in
 ascending order without any preference.   
         In the first pass, we force the renaming of registers that
         don't belong to PREFERRED_CLASS to registers that do, even
         though the latters were used not very long ago.   

References check_new_reg_p(), reg_class_contents, TEST_HARD_REG_BIT, and tick.

void regrename_analyze ( bitmap  )
du_head_p regrename_chain_from_id ( unsigned  int)
void regrename_do_replace ( du_head_p  ,
int   
)
void regrename_finish ( void  )

Free all global data used by the register renamer.

void regrename_init ( bool  )

Variable Documentation

vec<insn_rr_info> insn_rr

If nonnull, the code calling into the register renamer requested information about insn operands, and we store it here.