GCC Middle and Back End API Reference
target_hard_regs Struct Reference

#include <hard-reg-set.h>

Data Fields

HARD_REG_SET x_accessible_reg_set
HARD_REG_SET x_operand_reg_set
char x_fixed_regs [FIRST_PSEUDO_REGISTER]
HARD_REG_SET x_fixed_reg_set
char x_call_used_regs [FIRST_PSEUDO_REGISTER]
char x_call_really_used_regs [FIRST_PSEUDO_REGISTER]
HARD_REG_SET x_call_used_reg_set
HARD_REG_SET x_call_fixed_reg_set
HARD_REG_SET x_regs_invalidated_by_call
HARD_REG_SET x_no_caller_save_reg_set
int x_reg_alloc_order [FIRST_PSEUDO_REGISTER]
int x_inv_reg_alloc_order [FIRST_PSEUDO_REGISTER]
HARD_REG_SET x_reg_class_contents [N_REG_CLASSES]
bool x_class_only_fixed_regs [N_REG_CLASSES]
unsigned int x_reg_class_size [N_REG_CLASSES]
enum reg_class x_reg_class_subclasses [N_REG_CLASSES][N_REG_CLASSES]
enum reg_class x_reg_class_subunion [N_REG_CLASSES][N_REG_CLASSES]
enum reg_class x_reg_class_superunion [N_REG_CLASSES][N_REG_CLASSES]
const char * x_reg_names [FIRST_PSEUDO_REGISTER]

Field Documentation

HARD_REG_SET target_hard_regs::x_accessible_reg_set

The set of registers that actually exist on the current target.

HARD_REG_SET target_hard_regs::x_call_fixed_reg_set

Contains registers that are fixed use – i.e. in fixed_reg_set – or a function value return register or TARGET_STRUCT_VALUE_RTX or STATIC_CHAIN_REGNUM. These are the registers that cannot hold quantities across calls even if we are willing to save and restore them.

char target_hard_regs::x_call_really_used_regs[FIRST_PSEUDO_REGISTER]
HARD_REG_SET target_hard_regs::x_call_used_reg_set

The same info as a HARD_REG_SET.

char target_hard_regs::x_call_used_regs[FIRST_PSEUDO_REGISTER]

Indexed by hard register number, contains 1 for registers that are fixed use or are clobbered by function calls. These are the registers that cannot be used to allocate a pseudo reg whose life crosses calls.

bool target_hard_regs::x_class_only_fixed_regs[N_REG_CLASSES]

For each reg class, a boolean saying whether the class contains only fixed registers.

HARD_REG_SET target_hard_regs::x_fixed_reg_set

The same info as a HARD_REG_SET.

char target_hard_regs::x_fixed_regs[FIRST_PSEUDO_REGISTER]

Indexed by hard register number, contains 1 for registers that are fixed use (stack pointer, pc, frame pointer, etc.;. These are the registers that cannot be used to allocate a pseudo reg whose life does not cross calls.

int target_hard_regs::x_inv_reg_alloc_order[FIRST_PSEUDO_REGISTER]

The inverse of reg_alloc_order.

HARD_REG_SET target_hard_regs::x_no_caller_save_reg_set

Call used hard registers which can not be saved because there is no insn for this.

HARD_REG_SET target_hard_regs::x_operand_reg_set

The set of registers that should be considered to be register operands. It is a subset of x_accessible_reg_set.

int target_hard_regs::x_reg_alloc_order[FIRST_PSEUDO_REGISTER]

Table of register numbers in the order in which to try to use them.

HARD_REG_SET target_hard_regs::x_reg_class_contents[N_REG_CLASSES]

For each reg class, a HARD_REG_SET saying which registers are in it.

unsigned int target_hard_regs::x_reg_class_size[N_REG_CLASSES]

For each reg class, number of regs it contains.

enum reg_class target_hard_regs::x_reg_class_subclasses[N_REG_CLASSES][N_REG_CLASSES]

For each reg class, table listing all the classes contained in it.

enum reg_class target_hard_regs::x_reg_class_subunion[N_REG_CLASSES][N_REG_CLASSES]

For each pair of reg classes, a largest reg class contained in their union.

enum reg_class target_hard_regs::x_reg_class_superunion[N_REG_CLASSES][N_REG_CLASSES]

For each pair of reg classes, the smallest reg class that contains their union.

const char* target_hard_regs::x_reg_names[FIRST_PSEUDO_REGISTER]

Vector indexed by hardware reg giving its name.

HARD_REG_SET target_hard_regs::x_regs_invalidated_by_call

Contains 1 for registers that are set or clobbered by calls. ??? Ideally, this would be just call_used_regs plus global_regs, but for someone's bright idea to have call_used_regs strictly include fixed_regs. Which leaves us guessing as to the set of fixed_regs that are actually preserved. We know for sure that those associated with the local stack frame are safe, but scant others.


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