GCC Middle and Back End API Reference
regrename.h File Reference

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(), 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.