[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