|
GCC Middle and Back End API Reference
|

Data Fields | |
| unsigned int | size |
| bitmap * | succs |
| bitmap * | implicit_preds |
| bitmap * | preds |
| int * | indirect_cycles |
| unsigned int * | rep |
| int * | eq_rep |
| unsigned int * | pe |
| int * | pe_rep |
| unsigned int * | pointer_label |
| unsigned int * | loc_label |
| bitmap * | pointed_by |
| bitmap * | points_to |
| sbitmap | direct_nodes |
| bitmap | address_taken |
| vec< constraint_t > * | complex |
The constraint graph is represented as an array of bitmaps containing successor nodes.
| 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().