GCC Middle and Back End API Reference
target_rtl Struct Reference

#include <rtl.h>

Collaboration diagram for target_rtl:

Data Fields

rtx x_global_rtl [GR_MAX]
rtx x_pic_offset_table_rtx
rtx x_return_address_pointer_rtx
rtx x_initial_regno_reg_rtx [FIRST_PSEUDO_REGISTER]
rtx x_top_of_stack [MAX_MACHINE_MODE]
rtx x_static_reg_base_value [FIRST_PSEUDO_REGISTER]
struct mem_attrsx_mode_mem_attrs [(int) MAX_MACHINE_MODE]

Detailed Description

Target-dependent globals.


Field Documentation

rtx target_rtl::x_global_rtl[GR_MAX]

All references to the hard registers in global_rtl_index go through these unique rtl objects. On machines where the frame-pointer and arg-pointer are the same register, they use the same unique object.

After register allocation, other rtl objects which used to be pseudo-regs may be clobbered to refer to the frame-pointer register. But references that were originally to the frame-pointer can be distinguished from the others because they contain frame_pointer_rtx.

When to use frame_pointer_rtx and hard_frame_pointer_rtx is a little tricky: until register elimination has taken place hard_frame_pointer_rtx should be used if it is being set, and frame_pointer_rtx otherwise. After register elimination hard_frame_pointer_rtx should always be used. On machines where the two registers are same (most) then these are the same.

rtx target_rtl::x_initial_regno_reg_rtx[FIRST_PSEUDO_REGISTER]

Commonly used RTL for hard registers. These objects are not necessarily unique, so we allocate them separately from global_rtl. They are initialized once per compilation unit, then copied into regno_reg_rtx at the beginning of each function.

struct mem_attrs* target_rtl::x_mode_mem_attrs[(int) MAX_MACHINE_MODE]

The default memory attributes for each mode.

rtx target_rtl::x_pic_offset_table_rtx

A unique representation of (REG:Pmode PIC_OFFSET_TABLE_REGNUM).

rtx target_rtl::x_return_address_pointer_rtx

A unique representation of (REG:Pmode RETURN_ADDRESS_POINTER_REGNUM). This is used to implement __builtin_return_address for some machines; see for instance the MIPS port.

rtx target_rtl::x_static_reg_base_value[FIRST_PSEUDO_REGISTER]

Static hunks of RTL used by the aliasing code; these are treated as persistent to avoid unnecessary RTL allocations.

rtx target_rtl::x_top_of_stack[MAX_MACHINE_MODE]

A sample (mem:M stack_pointer_rtx) rtx for each mode M.


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