[llvm-commits] [llvm] r149188 - /llvm/trunk/lib/CodeGen/RegisterScavenging.cpp

Jakob Stoklund Olesen stoklund at 2pi.dk
Sat Jan 28 17:29:25 PST 2012


Author: stoklund
Date: Sat Jan 28 19:29:25 2012
New Revision: 149188

URL: http://llvm.org/viewvc/llvm-project?rev=149188&view=rev
Log:
Avoid creating BitVector temporaries.

Modified:
    llvm/trunk/lib/CodeGen/RegisterScavenging.cpp

Modified: llvm/trunk/lib/CodeGen/RegisterScavenging.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegisterScavenging.cpp?rev=149188&r1=149187&r2=149188&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/RegisterScavenging.cpp (original)
+++ llvm/trunk/lib/CodeGen/RegisterScavenging.cpp Sat Jan 28 19:29:25 2012
@@ -234,10 +234,10 @@
 }
 
 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 @@
   // 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;





More information about the llvm-commits mailing list