Privatize an unused part of the LiveIntervalUnion::Query interface.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 11 Aug 2011 21:00:42 +0000 (21:00 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 11 Aug 2011 21:00:42 +0000 (21:00 +0000)
No clients are iterating over interference overlaps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137350 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/LiveIntervalUnion.h
lib/CodeGen/RegAllocBasic.cpp

index a024bde58155ec5cbb6f8fec285659cd3749b5fa..7f494474f99e656bcaadecc6e07e0fc2c523538a 100644 (file)
@@ -187,27 +187,9 @@ public:
       return *VirtReg;
     }
 
-    bool isInterference(const InterferenceResult &IR) const {
-      if (IR.VirtRegI != VirtReg->end()) {
-        assert(overlap(*IR.VirtRegI, IR.LiveUnionI) &&
-               "invalid segment iterators");
-        return true;
-      }
-      return false;
-    }
-
     // Does this live virtual register interfere with the union?
     bool checkInterference() { return isInterference(firstInterference()); }
 
-    // Get the first pair of interfering segments, or a noninterfering result.
-    // This initializes the firstInterference_ cache.
-    const InterferenceResult &firstInterference();
-
-    // Treat the result as an iterator and advance to the next interfering pair
-    // of segments. Visiting each unique interfering pairs means that the same
-    // VirtReg or LiveUnion segment may be visited multiple times.
-    bool nextInterference(InterferenceResult &IR) const;
-
     // Count the virtual registers in this union that interfere with this
     // query's live virtual register, up to maxInterferingRegs.
     unsigned collectInterferingVRegs(unsigned MaxInterferingRegs = UINT_MAX);
@@ -235,7 +217,18 @@ public:
     void operator=(const Query&); // DO NOT IMPLEMENT
 
     // Private interface for queries
+    const InterferenceResult &firstInterference();
+    bool nextInterference(InterferenceResult &IR) const;
     void findIntersection(InterferenceResult &IR) const;
+
+    bool isInterference(const InterferenceResult &IR) const {
+      if (IR.VirtRegI != VirtReg->end()) {
+        assert(overlap(*IR.VirtRegI, IR.LiveUnionI) &&
+               "invalid segment iterators");
+        return true;
+      }
+      return false;
+    }
   };
 };
 
index a97b9b6b40c4ec85a9a55ae81bf0743f7a925698..5496d69fd3df1aa381faee2de9cdb4a3b9911100 100644 (file)
@@ -498,8 +498,9 @@ unsigned RABasic::selectOrSplit(LiveInterval &VirtReg,
       // Found an available register.
       return PhysReg;
     }
+    Queries[interfReg].collectInterferingVRegs(1);
     LiveInterval *interferingVirtReg =
-      Queries[interfReg].firstInterference().liveUnionPos().value();
+      Queries[interfReg].interferingVRegs().front();
 
     // The current VirtReg must either be spillable, or one of its interferences
     // must have less spill weight.