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

Data Fields

unsigned int size
bitmapsuccs
bitmapimplicit_preds
bitmappreds
int * indirect_cycles
unsigned int * rep
int * eq_rep
unsigned int * pe
int * pe_rep
unsigned int * pointer_label
unsigned int * loc_label
bitmappointed_by
bitmappoints_to
sbitmap direct_nodes
bitmap address_taken
vec< constraint_t > * complex

Detailed Description

The constraint graph is represented as an array of bitmaps containing successor nodes.


Field Documentation

bitmap constraint_graph::address_taken

Bitmap of nodes where the bit is set if the node is address taken. Used for variable substitution.

vec<constraint_t>* constraint_graph::complex

Vector of complex constraints for each graph node. Complex constraints are those involving dereferences or offsets that are not 0.

Referenced by unite_pointer_equivalences().

sbitmap constraint_graph::direct_nodes

Bitmap of nodes where the bit is set if the node is a direct node. Used for variable substitution.

Referenced by add_pred_graph_edge().

int* constraint_graph::eq_rep

Equivalence class representative for a label. This is used for variable substitution.

bitmap* constraint_graph::implicit_preds

Implicit predecessors of each node (Used for variable substitution).

int* constraint_graph::indirect_cycles

Indirect cycle representatives, or -1 if the node has no indirect cycles.

Referenced by build_succ_graph(), and merge_graph_nodes().

unsigned int* constraint_graph::loc_label

Location equivalence label for each node, used during location equivalence finding.

unsigned int* constraint_graph::pe

Pointer equivalence label for a node. All nodes with the same pointer equivalence label can be unified together at some point (either during constraint optimization or after the constraint graph is built).

Referenced by perform_var_substitution().

int* constraint_graph::pe_rep

Pointer equivalence representative for a label. This is used to handle nodes that are pointer equivalent but not location equivalent. We can unite these once the addressof constraints are transformed into initial points-to sets.

Referenced by merge_graph_nodes(), and perform_var_substitution().

bitmap* constraint_graph::pointed_by

Pointed-by set for each node, used during location equivalence finding. This is pointed-by rather than pointed-to, because it is constructed using the predecessor graph.

unsigned int* constraint_graph::pointer_label

Pointer equivalence label for each node, used during variable substitution.

bitmap* constraint_graph::points_to

Points to sets for pointer equivalence. This is not the actual points-to sets for nodes.

Referenced by equiv_class_lookup_or_add(), and equiv_class_hasher::hash().

bitmap* constraint_graph::preds

Explicit predecessors of each node (Used for variable substitution).

Referenced by free_scc_info().

unsigned int* constraint_graph::rep

Representative node for a node. rep[a] == a unless the node has been unified.

Referenced by merge_graph_nodes().

unsigned int constraint_graph::size

Size of this graph, which may be different than the number of nodes in the variable map.

bitmap* constraint_graph::succs

Explicit successors of each node.

Referenced by merge_node_constraints(), and pt_solution_set_var().


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