summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2012-10-10 06:39:48 +0000
committerLang Hames <lhames@gmail.com>2012-10-10 06:39:48 +0000
commit05fee08dfa9821279b2d3f805a6303dcb8d86c03 (patch)
tree6cb6b9b436dcb7bed800cbfb61f2ba28555adff3 /llvm/lib
parented42e799dc42fdb0518eae7da36d9331ace4b33a (diff)
downloadbcm5719-llvm-05fee08dfa9821279b2d3f805a6303dcb8d86c03.tar.gz
bcm5719-llvm-05fee08dfa9821279b2d3f805a6303dcb8d86c03.zip
My earlier "fix" for PBQP (see r165201) was incorrect. The real issue was that
checkRegMaskInterference only initializes the bitmask on the first interference. This fixes PR14027 and (re)fixes PR13945. llvm-svn: 165608
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/RegAllocPBQP.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/RegAllocPBQP.cpp b/llvm/lib/CodeGen/RegAllocPBQP.cpp
index f2473681a5d..984aab2a7a8 100644
--- a/llvm/lib/CodeGen/RegAllocPBQP.cpp
+++ b/llvm/lib/CodeGen/RegAllocPBQP.cpp
@@ -218,7 +218,7 @@ std::auto_ptr<PBQPRAProblem> PBQPBuilder::build(MachineFunction *mf,
LiveInterval *vregLI = &LIS->getInterval(vreg);
// Record any overlaps with regmask operands.
- BitVector regMaskOverlaps(tri->getNumRegs());
+ BitVector regMaskOverlaps;
LIS->checkRegMaskInterference(*vregLI, regMaskOverlaps);
// Compute an initial allowed set for the current vreg.
@@ -231,7 +231,7 @@ std::auto_ptr<PBQPRAProblem> PBQPBuilder::build(MachineFunction *mf,
continue;
// vregLI crosses a regmask operand that clobbers preg.
- if (!regMaskOverlaps.empty() && regMaskOverlaps.test(preg))
+ if (!regMaskOverlaps.empty() && !regMaskOverlaps.test(preg))
continue;
// vregLI overlaps fixed regunit interference.
OpenPOWER on IntegriCloud