summaryrefslogtreecommitdiff
path: root/lib/CodeGen/RegisterScavenging.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-01-29 01:29:25 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-01-29 01:29:25 +0000
commit685c23e75842e64145fe319efd792abe72a827dd (patch)
tree23938826d3a02b2796bbf349f029925d2e857b9c /lib/CodeGen/RegisterScavenging.cpp
parent19de016955f744cf2466fadcd28e9bf8847dd260 (diff)
downloadllvm-685c23e75842e64145fe319efd792abe72a827dd.tar.gz
llvm-685c23e75842e64145fe319efd792abe72a827dd.tar.bz2
llvm-685c23e75842e64145fe319efd792abe72a827dd.tar.xz
Avoid creating BitVector temporaries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149188 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegisterScavenging.cpp')
-rw-r--r--lib/CodeGen/RegisterScavenging.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/CodeGen/RegisterScavenging.cpp b/lib/CodeGen/RegisterScavenging.cpp
index 16c5898e16..7620cbbc42 100644
--- a/lib/CodeGen/RegisterScavenging.cpp
+++ b/lib/CodeGen/RegisterScavenging.cpp
@@ -234,10 +234,10 @@ void RegScavenger::forward() {
}
void RegScavenger::getRegsUsed(BitVector &used, bool includeReserved) {
- if (includeReserved)
- used = ~RegsAvailable;
- else
- used = ~RegsAvailable & ~ReservedRegs;
+ used = RegsAvailable;
+ if (!includeReserved)
+ used |= ReservedRegs;
+ used.flip();
}
unsigned RegScavenger::FindUnusedReg(const TargetRegisterClass *RC) const {
@@ -352,9 +352,9 @@ unsigned RegScavenger::scavengeRegister(const TargetRegisterClass *RC,
// RegsAvailable, as RegsAvailable does not take aliases into account.
// That's what getRegsAvailable() is for.
BitVector Available = getRegsAvailable(RC);
-
- if ((Candidates & Available).any())
- Candidates &= Available;
+ Available &= Candidates;
+ if (Available.any())
+ Candidates = Available;
// Find the register whose use is furthest away.
MachineBasicBlock::iterator UseMI;