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: