summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/RegAllocLinearScan.cpp
diff options
context:
space:
mode:
authorDavid Greene <greened@obbligato.org>2009-11-20 21:13:27 +0000
committerDavid Greene <greened@obbligato.org>2009-11-20 21:13:27 +0000
commitf46c37c0de6d86ca232ca0d8a32dbd4cf1feda76 (patch)
treef675634baa2aea2745d50861124edce36c6cb68e /llvm/lib/CodeGen/RegAllocLinearScan.cpp
parent85121a3bda51bc151da7b1a28e83894193b733f4 (diff)
downloadbcm5719-llvm-f46c37c0de6d86ca232ca0d8a32dbd4cf1feda76.tar.gz
bcm5719-llvm-f46c37c0de6d86ca232ca0d8a32dbd4cf1feda76.zip
Cleanups.
Make things a little more efficient as suggested by Evan. llvm-svn: 89489
Diffstat (limited to 'llvm/lib/CodeGen/RegAllocLinearScan.cpp')
-rw-r--r--llvm/lib/CodeGen/RegAllocLinearScan.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/RegAllocLinearScan.cpp b/llvm/lib/CodeGen/RegAllocLinearScan.cpp
index 708ecbe84af..4ff512932f8 100644
--- a/llvm/lib/CodeGen/RegAllocLinearScan.cpp
+++ b/llvm/lib/CodeGen/RegAllocLinearScan.cpp
@@ -87,6 +87,7 @@ namespace {
// Initialize the queue to record recently-used registers.
if (NumRecentlyUsedRegs > 0)
RecentRegs.resize(NumRecentlyUsedRegs, 0);
+ RecentNext = RecentRegs.begin();
}
typedef std::pair<LiveInterval*, LiveInterval::iterator> IntervalPtr;
@@ -154,14 +155,16 @@ namespace {
std::auto_ptr<Spiller> spiller_;
// The queue of recently-used registers.
- SmallVector<unsigned, 3> RecentRegs;
+ SmallVector<unsigned, 4> RecentRegs;
+ SmallVector<unsigned, 4>::iterator RecentNext;
// Record that we just picked this register.
void recordRecentlyUsed(unsigned reg) {
assert(reg != 0 && "Recently used register is NOREG!");
if (!RecentRegs.empty()) {
- std::copy(RecentRegs.begin() + 1, RecentRegs.end(), RecentRegs.begin());
- RecentRegs.back() = reg;
+ *RecentNext++ = reg;
+ if (RecentNext == RecentRegs.end())
+ RecentNext = RecentRegs.begin();
}
}
OpenPOWER on IntegriCloud