llvm.org GIT mirror llvm / e6f0479
Comment fixups git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42279 91177308-0d34-0410-b5e6-96231b3b80d8 Daniel Berlin 13 years ago
2 changed file(s) with 12 addition(s) and 12 deletion(s). Raw diff Collapse all Expand all
285285 }
286286 BecameZero = allzero;
287287 }
288
288289 // Get a hash value for this element;
289290 uint64_t getHashValue() const {
290291 uint64_t HashVal = 0;
2929 // B can point to. Constraints can handle copies, loads, and stores, and
3030 // address taking.
3131 //
32 // The Offline constraint graph optimization portion includes offline variable
33 // substitution algorithms intended to pointer and location equivalences.
34 // Pointer equivalences are those pointers that will have the same points-to
35 // sets, and location equivalences are those variables that always appear
36 // together in points-to sets.
32 // The offline constraint graph optimization portion includes offline variable
33 // substitution algorithms intended to computer pointer and location
34 // equivalences. Pointer equivalences are those pointers that will have the
35 // same points-to sets, and location equivalences are those variables that
36 // always appear together in points-to sets.
3737 //
3838 // The inclusion constraint solving phase iteratively propagates the inclusion
3939 // constraints until a fixed point is reached. This is an O(N^3) algorithm.
136136 };
137137
138138 // Node class - This class is used to represent a node in the constraint
139 // graph. Due to various optimizations, not always the case that there is a
140 // mapping from a Node to a Value. In particular, we add artificial Node's
141 // that represent the set of pointed-to variables shared for each location
142 // equivalent Node.
139 // graph. Due to various optimizations, it is not always the case that
140 // there is a mapping from a Node to a Value. In particular, we add
141 // artificial Node's that represent the set of pointed-to variables shared
142 // for each location equivalent Node.
143143 struct Node {
144144 Value *Val;
145145 SparseBitVector<> *Edges;
159159 // Number of incoming edges, used during variable substitution to early
160160 // free the points-to sets
161161 unsigned NumInEdges;
162 // True if our ponits-to set is in the Set2PEClass map
162 // True if our points-to set is in the Set2PEClass map
163163 bool StoredInHash;
164 // True if our node has no indirect constraints (Complex or otherwise)
164 // True if our node has no indirect constraints (complex or otherwise)
165165 bool Direct;
166166 // True if the node is address taken, *or* it is part of a group of nodes
167167 // that must be kept together. This is set to true for functions and
168168 // their arg nodes, which must be kept at the same position relative to
169169 // their base function node.
170 // kept at the same position relative to their base function node.
171170 bool AddressTaken;
172171
173172 // Nodes in cycles (or in equivalence classes) are united together using a