GCC Middle and Back End API Reference
lra_reg Struct Reference

#include <lra-int.h>

Collaboration diagram for lra_reg:

Data Fields

bitmap_head insn_bitmap
HARD_REG_SET conflict_hard_regs
int preferred_hard_regno1
int preferred_hard_regno2
int preferred_hard_regno_profit1
int preferred_hard_regno_profit2
bool no_stack_p
bool call_p
int nrefs
int freq
int last_reload
int restore_regno
int val
int offset
enum machine_mode biggest_mode
lra_live_range_t live_ranges
lra_copy_t copies

Detailed Description

   Common info about a register (pseudo or hard register).  

Field Documentation

enum machine_mode lra_reg::biggest_mode
     These members are set up in lra-lives.c and updated in
     lra-coalesce.c.  
     The biggest size mode in which each pseudo reg is referred in
     whole function (possibly via subreg).  
bool lra_reg::call_p
     True if the pseudo crosses a call.  It is setup in lra-lives.c
     and used to check that the pseudo crossing a call did not get a
     call used hard register.  
HARD_REG_SET lra_reg::conflict_hard_regs
     The following fields are defined only for pseudos.  
     Hard registers with which the pseudo conflicts.  
lra_copy_t lra_reg::copies
     This member is set up in lra-lives.c for subsequent
     assignments.  

Referenced by initialize_lra_reg_info_element().

bitmap_head lra_reg::insn_bitmap
     Bitmap of UIDs of insns (including debug insns) referring the
     reg.  

Referenced by lra_set_used_insn_alternative_by_uid(), and spill_pseudos().

int lra_reg::last_reload

Referenced by process_alt_operands().

lra_live_range_t lra_reg::live_ranges
     Live ranges of the pseudo.  

Referenced by create_live_range_start_chains().

bool lra_reg::no_stack_p
     True if the pseudo should not be assigned to a stack register.  
int lra_reg::nrefs
     Number of references and execution frequencies of the register in
     *non-debug* insns.  
int lra_reg::offset
     Offset from relative eliminate register to pesudo reg.  

Referenced by lra_update_dup().

int lra_reg::preferred_hard_regno1
     We assign hard registers to reload pseudos which can occur in few
     places.  So two hard register preferences are enough for them.
     The following fields define the preferred hard registers.  If
     there are no such hard registers the first field value is
     negative.  If there is only one preferred hard register, the 2nd
     field is negative.  

Referenced by bb_has_abnormal_call_pred(), and next_program_point().

int lra_reg::preferred_hard_regno2

Referenced by next_program_point().

int lra_reg::preferred_hard_regno_profit1
     Profits to use the corresponding preferred hard registers.  If
     the both hard registers defined, the first hard register has not
     less profit than the second one.  

Referenced by bb_has_abnormal_call_pred(), and next_program_point().

int lra_reg::preferred_hard_regno_profit2
int lra_reg::restore_regno
     Regno used to undo the inheritance.  It can be non-zero only
     between couple of inheritance and undo inheritance passes.  
int lra_reg::val
     Value holding by register.  If the pseudos have the same value
     they do not conflict.  

Referenced by lra_update_dup().


The documentation for this struct was generated from the following file: