GCC Middle and Back End API Reference
|
#include <lra-int.h>
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 |
Common info about a register (pseudo or hard register).
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().
int lra_reg::freq |
Referenced by initialize_lra_reg_info_element(), lra_debug_live_ranges(), and update_hard_regno_preference().
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 |
Referenced by bb_has_abnormal_call_pred().
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().