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

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

rtx table_elt::canon_exp

Referenced by flush_hash_table().

int table_elt::cost
struct table_elt* table_elt::first_same_value
struct table_elt* table_elt::next_same_hash
struct table_elt* table_elt::next_same_value
struct table_elt* table_elt::prev_same_hash
struct table_elt* table_elt::prev_same_value
int table_elt::regcost
struct table_elt* table_elt::related_value

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