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

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

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: