GCC Middle and Back End API Reference
store_info Struct Reference
Collaboration diagram for store_info:

Data Fields

bool is_set
bool is_large
int group_id
cselib_valcse_base
rtx mem
rtx mem_addr
alias_set_type alias_set
HOST_WIDE_INT begin
HOST_WIDE_INT end
union {
   unsigned HOST_WIDE_INT   small_bitmask
   struct {
      bitmap   bmap
      int   count
   }   large
positions_needed
struct store_infonext
rtx rhs
rtx const_rhs
struct insn_inforedundant_reason

Detailed Description

This structure holds information about a candidate store.


Field Documentation

alias_set_type store_info::alias_set

If this is non-zero, it is the alias set of a spill location.

Referenced by dse_step3().

HOST_WIDE_INT store_info::begin

The offset of the first and byte before the last byte associated with the operation.

Referenced by check_mem_read_rtx(), dse_step3(), and find_shift_sequence().

bitmap store_info::bmap

A bitmap with one bit per byte. Cleared bit means the position is needed. Used if IS_LARGE is false.

rtx store_info::const_rhs

If rhs is or holds a constant, this contains that constant, otherwise NULL.

Referenced by find_shift_sequence().

int store_info::count

Number of set bits (i.e. unneeded bytes) in BITMAP. If it is equal to END - BEGIN, the whole store is unused.

cselib_val* store_info::cse_base

This is the cselib value.

HOST_WIDE_INT store_info::end

Referenced by find_shift_sequence().

int store_info::group_id

The id of the mem group of the base address. If rtx_varies_p is true, this is -1. Otherwise, it is the index into the group table.

Referenced by dse_step3().

bool store_info::is_large

False if a single HOST_WIDE_INT bitmap is used for positions_needed.

bool store_info::is_set

False means this is a clobber.

Referenced by check_mem_read_use(), and dse_step3().

struct { ... } store_info::large
rtx store_info::mem

This canonized mem.

Referenced by find_shift_sequence().

rtx store_info::mem_addr

Canonized MEM address for use by canon_true_dependence.

struct store_info* store_info::next

The next store info for this insn.

Referenced by check_mem_read_use(), and dse_step3().

union { ... } store_info::positions_needed
struct insn_info* store_info::redundant_reason

Set if this store stores the same constant value as REDUNDANT_REASON insn stored. These aren't eliminated early, because doing that might prevent the earlier larger store to be eliminated.

Referenced by dse_transfer_function().

rtx store_info::rhs

The right hand side of the store. This is used if there is a subsequent reload of the mems address somewhere later in the basic block.

Referenced by check_mem_read_rtx(), and find_shift_sequence().

unsigned HOST_WIDE_INT store_info::small_bitmask

A bitmask as wide as the number of bytes in the word that contains a 1 if the byte may be needed. The store is unused if all of the bits are 0. This is used if IS_LARGE is false.


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