[llvm-commits] [llvm] r129081 - /llvm/trunk/lib/CodeGen/InterferenceCache.cpp

Jakob Stoklund Olesen stoklund at 2pi.dk
Thu Apr 7 10:27:50 PDT 2011


Author: stoklund
Date: Thu Apr  7 12:27:50 2011
New Revision: 129081

URL: http://llvm.org/viewvc/llvm-project?rev=129081&view=rev
Log:
Avoid moving iterators when the previous block was just visited.

Modified:
    llvm/trunk/lib/CodeGen/InterferenceCache.cpp

Modified: llvm/trunk/lib/CodeGen/InterferenceCache.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/InterferenceCache.cpp?rev=129081&r1=129080&r2=129081&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/InterferenceCache.cpp (original)
+++ llvm/trunk/lib/CodeGen/InterferenceCache.cpp Thu Apr  7 12:27:50 2011
@@ -99,13 +99,15 @@
   tie(Start, Stop) = Indexes->getMBBRange(MBBNum);
 
   // Use advanceTo only when possible.
-  if (!PrevPos.isValid() || Start < PrevPos)
-    for (unsigned i = 0, e = Iters.size(); i != e; ++i)
-      Iters[i].find(Start);
-  else
-    for (unsigned i = 0, e = Iters.size(); i != e; ++i)
-      Iters[i].advanceTo(Start);
-  PrevPos = Start;
+  if (PrevPos != Start) {
+    if (!PrevPos.isValid() || Start < PrevPos)
+      for (unsigned i = 0, e = Iters.size(); i != e; ++i)
+        Iters[i].find(Start);
+    else
+      for (unsigned i = 0, e = Iters.size(); i != e; ++i)
+        Iters[i].advanceTo(Start);
+    PrevPos = Start;
+  }
 
   // Check for first interference.
   for (unsigned i = 0, e = Iters.size(); i != e; ++i) {
@@ -129,11 +131,14 @@
     if (!I.valid() || I.start() >= Stop)
       continue;
     I.advanceTo(Stop);
-    if (!I.valid() || I.start() >= Stop)
+    bool Backup = !I.valid() || I.start() >= Stop;
+    if (Backup)
       --I;
     SlotIndex StopI = I.stop();
     if (!BI->Last.isValid() || StopI > BI->Last)
       BI->Last = StopI;
+    if (Backup)
+      ++I;
   }
   PrevPos = Stop;
 }





More information about the llvm-commits mailing list