summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-01-17 00:35:26 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-01-17 00:35:26 +0000
commitdc5b4c57d728fd37627810f6937c5f746e831413 (patch)
treefd2a6c8c1a56c42ec4dc20b797a2e0e27da78ce4
parentd8583eb993319f633fe9a5c5b23bc4e6fe8c20db (diff)
downloadllvm-dc5b4c57d728fd37627810f6937c5f746e831413.tar.gz
Replace std::vector<bool> with BitVector.
llvm-svn: 46104
-rw-r--r--llvm/lib/CodeGen/RegAllocLocal.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/RegAllocLocal.cpp b/llvm/lib/CodeGen/RegAllocLocal.cpp
index 29418243398f..3654efd22bd0 100644
--- a/llvm/lib/CodeGen/RegAllocLocal.cpp
+++ b/llvm/lib/CodeGen/RegAllocLocal.cpp
@@ -91,13 +91,15 @@ namespace {
// scavenged. If a virtual register has simply been rematerialized, there
// is no reason to spill it to memory when we need the register back.
//
- std::vector<bool> VirtRegModified;
+ BitVector VirtRegModified;
void markVirtRegModified(unsigned Reg, bool Val = true) {
assert(MRegisterInfo::isVirtualRegister(Reg) && "Illegal VirtReg!");
Reg -= MRegisterInfo::FirstVirtualRegister;
- if (VirtRegModified.size() <= Reg) VirtRegModified.resize(Reg+1);
- VirtRegModified[Reg] = Val;
+ if (Val)
+ VirtRegModified.set(Reg);
+ else
+ VirtRegModified.reset(Reg);
}
bool isVirtRegModified(unsigned Reg) const {
@@ -819,7 +821,9 @@ bool RALocal::runOnMachineFunction(MachineFunction &Fn) {
// initialize the virtual->physical register map to have a 'null'
// mapping for all virtual registers
- Virt2PhysRegMap.grow(MF->getRegInfo().getLastVirtReg());
+ unsigned LastVirtReg = MF->getRegInfo().getLastVirtReg();
+ Virt2PhysRegMap.grow(LastVirtReg);
+ VirtRegModified.resize(LastVirtReg-MRegisterInfo::FirstVirtualRegister);
// Loop over all of the basic blocks, eliminating virtual register references
for (MachineFunction::iterator MBB = Fn.begin(), MBBe = Fn.end();