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().