-/// ConnectedVNInfoEqClasses - Helper class that can divide VNInfos in a
-/// LiveInterval into equivalence clases of connected components. A
-/// LiveInterval that has multiple connected components can be broken into
-/// multiple LiveIntervals.
-
-void ConnectedVNInfoEqClasses::Connect(unsigned a, unsigned b) {
- while (eqClass_[a] != eqClass_[b]) {
- if (eqClass_[a] > eqClass_[b])
- std::swap(a, b);
- unsigned t = eqClass_[b];
- assert(t <= b && "Invariant broken");
- eqClass_[b] = eqClass_[a];
- b = t;
- }
-}
-
-unsigned ConnectedVNInfoEqClasses::Renumber() {
- // Assign final class numbers.
- // We use the fact that eqClass_[i] == i for class leaders.
- // For others, eqClass_[i] points to an earlier value in the same class.
- unsigned count = 0;
- for (unsigned i = 0, e = eqClass_.size(); i != e; ++i) {
- unsigned q = eqClass_[i];
- assert(q <= i && "Invariant broken");
- eqClass_[i] = q == i ? count++ : eqClass_[q];
- }
-
- return count;
-}
-