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

Data Fields

rtx exp
rtx canon_exp
struct table_eltnext_same_hash
struct table_eltprev_same_hash
struct table_eltnext_same_value
struct table_eltprev_same_value
struct table_eltfirst_same_value
struct table_eltrelated_value
int cost
int regcost
enum machine_mode mode: MACHINE_MODE_BITSIZE
char in_memory
char is_const
char flag

Detailed Description

The hash table contains buckets which are chains of `struct table_elt's,
each recording one expression's information.
That expression is in the `exp' field.

The canon_exp field contains a canonical (from the point of view of
alias analysis) version of the `exp' field.

Those elements with the same hash code are chained in both directions
through the `next_same_hash' and `prev_same_hash' fields.

Each set of expressions with equivalent values
are on a two-way chain through the `next_same_value'
and `prev_same_value' fields, and all point with
the `first_same_value' field at the first element in
that chain.  The chain is in order of increasing cost.
Each element's cost value is in its `cost' field.

The `in_memory' field is nonzero for elements that
involve any reference to memory.  These elements are removed
whenever a write is done to an unidentified location in memory.
To be safe, we assume that a memory address is unidentified unless
the address is either a symbol constant or a constant plus
the frame pointer or argument pointer.

The `related_value' field is used to connect related expressions
(that differ by adding an integer).
The related expressions are chained in a circular fashion.
`related_value' is zero for expressions for which this
chain is not useful.

The `cost' field stores the cost of this element's expression.
The `regcost' field stores the value returned by approx_reg_cost for
this element's expression.

The `is_const' flag is set if the element is a constant (including
a fixed address).

The `flag' field is used as a temporary during some search routines.

The `mode' field is usually the same as GET_MODE (`exp'), but
if `exp' is a CONST_INT and has no machine mode then the `mode'
field is the mode it was being used as.  Each constant is
recorded separately for each mode it is used with.   

Field Documentation

◆ canon_exp

rtx table_elt::canon_exp

Referenced by insert_with_costs(), and invalidate().

◆ cost

◆ exp

◆ first_same_value

◆ flag

char table_elt::flag

◆ in_memory

◆ is_const

char table_elt::is_const

◆ mode

◆ next_same_hash

◆ next_same_value

◆ prev_same_hash

struct table_elt* table_elt::prev_same_hash

◆ prev_same_value

struct table_elt* table_elt::prev_same_value

◆ regcost

int table_elt::regcost

Referenced by cse_insn(), and insert_with_costs().

◆ related_value

struct table_elt* table_elt::related_value

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