[llvm] r270481 - InsertPointAnalysis: Move current live interval from being a class member

Wei Mi via llvm-commits llvm-commits at lists.llvm.org
Mon May 23 12:39:19 PDT 2016


Author: wmi
Date: Mon May 23 14:39:19 2016
New Revision: 270481

URL: http://llvm.org/viewvc/llvm-project?rev=270481&view=rev
Log:
InsertPointAnalysis: Move current live interval from being a class member
to query interfaces argument; NFC

Differential Revision: http://reviews.llvm.org/D20532

Modified:
    llvm/trunk/lib/CodeGen/InlineSpiller.cpp
    llvm/trunk/lib/CodeGen/SplitKit.cpp
    llvm/trunk/lib/CodeGen/SplitKit.h

Modified: llvm/trunk/lib/CodeGen/InlineSpiller.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/InlineSpiller.cpp?rev=270481&r1=270480&r2=270481&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/InlineSpiller.cpp (original)
+++ llvm/trunk/lib/CodeGen/InlineSpiller.cpp Mon May 23 14:39:19 2016
@@ -1079,7 +1079,8 @@ bool HoistSpillHelper::rmFromMergeableSp
 bool HoistSpillHelper::isSpillCandBB(unsigned OrigReg, VNInfo &OrigVNI,
                                      MachineBasicBlock &BB, unsigned &LiveReg) {
   SlotIndex Idx;
-  MachineBasicBlock::iterator MI = IPA.getLastInsertPointIter(BB);
+  LiveInterval &OrigLI = LIS.getInterval(OrigReg);
+  MachineBasicBlock::iterator MI = IPA.getLastInsertPointIter(OrigLI, BB);
   if (MI != BB.end())
     Idx = LIS.getInstructionIndex(*MI);
   else
@@ -1381,7 +1382,6 @@ void HoistSpillHelper::hoistAllSpills()
     int Slot = Ent.first.first;
     unsigned OrigReg = SlotToOrigReg[Slot];
     LiveInterval &OrigLI = LIS.getInterval(OrigReg);
-    IPA.setInterval(&OrigLI);
     VNInfo *OrigVNI = Ent.first.second;
     SmallPtrSet<MachineInstr *, 16> &EqValSpills = Ent.second;
     if (Ent.second.empty())
@@ -1422,7 +1422,7 @@ void HoistSpillHelper::hoistAllSpills()
     for (auto const Insert : SpillsToIns) {
       MachineBasicBlock *BB = Insert.first;
       unsigned LiveReg = Insert.second;
-      MachineBasicBlock::iterator MI = IPA.getLastInsertPointIter(*BB);
+      MachineBasicBlock::iterator MI = IPA.getLastInsertPointIter(OrigLI, *BB);
       TII.storeRegToStackSlot(*BB, MI, LiveReg, false, Slot,
                               MRI.getRegClass(LiveReg), &TRI);
       LIS.InsertMachineInstrRangeInMaps(std::prev(MI), MI);

Modified: llvm/trunk/lib/CodeGen/SplitKit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SplitKit.cpp?rev=270481&r1=270480&r2=270481&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SplitKit.cpp (original)
+++ llvm/trunk/lib/CodeGen/SplitKit.cpp Mon May 23 14:39:19 2016
@@ -43,10 +43,11 @@ STATISTIC(NumRepairs,  "Number of invali
 
 InsertPointAnalysis::InsertPointAnalysis(const LiveIntervals &lis,
                                          unsigned BBNum)
-    : LIS(lis), CurLI(nullptr), LastInsertPoint(BBNum) {}
+    : LIS(lis), LastInsertPoint(BBNum) {}
 
 SlotIndex
-InsertPointAnalysis::computeLastInsertPoint(const MachineBasicBlock &MBB) {
+InsertPointAnalysis::computeLastInsertPoint(const LiveInterval &CurLI,
+                                            const MachineBasicBlock &MBB) {
   unsigned Num = MBB.getNumber();
   std::pair<SlotIndex, SlotIndex> &LIP = LastInsertPoint[Num];
   SlotIndex MBBEnd = LIS.getMBBEndIdx(&MBB);
@@ -85,14 +86,13 @@ InsertPointAnalysis::computeLastInsertPo
   if (!LIP.second)
     return LIP.first;
 
-  assert(CurLI && "CurLI not being set");
   if (none_of(EHPadSucessors, [&](const MachineBasicBlock *EHPad) {
-        return LIS.isLiveInToMBB(*CurLI, EHPad);
+        return LIS.isLiveInToMBB(CurLI, EHPad);
       }))
     return LIP.first;
 
   // Find the value leaving MBB.
-  const VNInfo *VNI = CurLI->getVNInfoBefore(MBBEnd);
+  const VNInfo *VNI = CurLI.getVNInfoBefore(MBBEnd);
   if (!VNI)
     return LIP.first;
 
@@ -109,8 +109,9 @@ InsertPointAnalysis::computeLastInsertPo
 }
 
 MachineBasicBlock::iterator
-InsertPointAnalysis::getLastInsertPointIter(MachineBasicBlock &MBB) {
-  SlotIndex LIP = getLastInsertPoint(MBB);
+InsertPointAnalysis::getLastInsertPointIter(const LiveInterval &CurLI,
+                                            MachineBasicBlock &MBB) {
+  SlotIndex LIP = getLastInsertPoint(CurLI, MBB);
   if (LIP == LIS.getMBBEndIdx(&MBB))
     return MBB.end();
   return LIS.getInstructionFromIndex(LIP);
@@ -328,7 +329,6 @@ bool SplitAnalysis::isOriginalEndpoint(S
 void SplitAnalysis::analyze(const LiveInterval *li) {
   clear();
   CurLI = li;
-  IPA.setInterval(li);
   analyzeUses();
 }
 

Modified: llvm/trunk/lib/CodeGen/SplitKit.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SplitKit.h?rev=270481&r1=270480&r2=270481&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SplitKit.h (original)
+++ llvm/trunk/lib/CodeGen/SplitKit.h Mon May 23 14:39:19 2016
@@ -44,34 +44,32 @@ class LLVM_LIBRARY_VISIBILITY InsertPoin
 private:
   const LiveIntervals &LIS;
 
-  /// Current LiveInterval for which to insert split or spill.
-  const LiveInterval *CurLI;
-
   /// Last legal insert point in each basic block in the current function.
   /// The first entry is the first terminator, the second entry is the
   /// last valid point to insert a split or spill for a variable that is
   /// live into a landing pad successor.
   SmallVector<std::pair<SlotIndex, SlotIndex>, 8> LastInsertPoint;
 
-  SlotIndex computeLastInsertPoint(const MachineBasicBlock &MBB);
+  SlotIndex computeLastInsertPoint(const LiveInterval &CurLI,
+                                   const MachineBasicBlock &MBB);
 
 public:
   InsertPointAnalysis(const LiveIntervals &lis, unsigned BBNum);
 
-  void setInterval(const LiveInterval *LI) { CurLI = LI; }
-
-  /// Return the base index of the last valid insert point in \pMBB.
-  SlotIndex getLastInsertPoint(const MachineBasicBlock &MBB) {
+  /// Return the base index of the last valid insert point for \pCurLI in \pMBB.
+  SlotIndex getLastInsertPoint(const LiveInterval &CurLI,
+                               const MachineBasicBlock &MBB) {
     unsigned Num = MBB.getNumber();
     // Inline the common simple case.
     if (LastInsertPoint[Num].first.isValid() &&
         !LastInsertPoint[Num].second.isValid())
       return LastInsertPoint[Num].first;
-    return computeLastInsertPoint(MBB);
+    return computeLastInsertPoint(CurLI, MBB);
   }
 
-  /// Returns the last insert point as an iterator.
-  MachineBasicBlock::iterator getLastInsertPointIter(MachineBasicBlock &);
+  /// Returns the last insert point as an iterator for \pCurLI in \pMBB.
+  MachineBasicBlock::iterator getLastInsertPointIter(const LiveInterval &CurLI,
+                                                     MachineBasicBlock &MBB);
 };
 
 /// SplitAnalysis - Analyze a LiveInterval, looking for live range splitting
@@ -215,11 +213,11 @@ public:
   bool shouldSplitSingleBlock(const BlockInfo &BI, bool SingleInstrs) const;
 
   SlotIndex getLastSplitPoint(unsigned Num) {
-    return IPA.getLastInsertPoint(*MF.getBlockNumbered(Num));
+    return IPA.getLastInsertPoint(*CurLI, *MF.getBlockNumbered(Num));
   }
 
   MachineBasicBlock::iterator getLastSplitPointIter(MachineBasicBlock *BB) {
-    return IPA.getLastInsertPointIter(*BB);
+    return IPA.getLastInsertPointIter(*CurLI, *BB);
   }
 };
 




More information about the llvm-commits mailing list