/** A path in a compund graph. */
struct compound_graph_path {
firm_kind kind; /**< dynamic type tag for compound graph path. */
/** A path in a compund graph. */
struct compound_graph_path {
firm_kind kind; /**< dynamic type tag for compound graph path. */
- type *tp;
- int len;
- entity *nodes[1];
+ type *tp; /**< The type this path belongs to. */
+ int len; /**< length of the path */
+ int *arr_indicees; /**< List of array indicees. To compute position of
+ array elements */
+ entity *nodes[1]; /**< List of entities of length len to express the
+ access path. */
ent_volatility volatility; /**< Specifies volatility of entities content */
ent_stickyness stickyness; /**< Specifies whether this entity is sticky */
int offset; /**< Offset in bits for this entity. Fixed when layout
ent_volatility volatility; /**< Specifies volatility of entities content */
ent_stickyness stickyness; /**< Specifies whether this entity is sticky */
int offset; /**< Offset in bits for this entity. Fixed when layout
void *link; /**< To store some intermediate information */
unsigned long visit; /**< visited counter for walks of the type information */
struct dbg_info* dbi; /**< A pointer to information for debug support. */
/* ------------- fields for atomic entities ---------------*/
void *link; /**< To store some intermediate information */
unsigned long visit; /**< visited counter for walks of the type information */
struct dbg_info* dbi; /**< A pointer to information for debug support. */
/* ------------- fields for atomic entities ---------------*/
ir_node *value; /**< value if entity is not of variability uninitialized.
Only for atomic entities. */
/* ------------- fields for compound entities ---------------*/
ir_node *value; /**< value if entity is not of variability uninitialized.
Only for atomic entities. */
/* ------------- fields for compound entities ---------------*/
- compound_graph_path **val_paths; /**< paths corresponding to constant values. Only available if
- variablility not uninitialized. Must be set for variability constant */
+ compound_graph_path **val_paths; /**< paths corresponding to constant values. Only available if
+ variablility not uninitialized. Must be set for variability constant */
entity **overwrittenby; /**< A list of entities that overwrite this entity. */
/* ------------- fields for methods ---------------*/
entity **overwrittenby; /**< A list of entities that overwrite this entity. */
/* ------------- fields for methods ---------------*/
enum peculiarity peculiarity;
ir_graph *irg; /**< If (type == method_type) this is the corresponding irg.
The ir_graph constructor automatically sets this field.
Yes, it must be here. */
enum peculiarity peculiarity;
ir_graph *irg; /**< If (type == method_type) this is the corresponding irg.
The ir_graph constructor automatically sets this field.
Yes, it must be here. */
assert(ent && ent->kind == k_entity);
/* @@@ why peculiarity only for methods? */
assert(is_method_type(ent->type));
assert(ent && ent->kind == k_entity);
/* @@@ why peculiarity only for methods? */
assert(is_method_type(ent->type));