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: