Avoid moving iterators when the previous block was just visited.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129081 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/InterferenceCache.cpp b/lib/CodeGen/InterferenceCache.cpp
index 512b4b3..0aff128 100644
--- a/lib/CodeGen/InterferenceCache.cpp
+++ b/lib/CodeGen/InterferenceCache.cpp
@@ -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;
 }