diff options
author | Lang Hames <lhames@gmail.com> | 2012-10-04 04:50:53 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2012-10-04 04:50:53 +0000 |
commit | 8ce99f296bcb31c11dcb85df62b13192972e8e74 (patch) | |
tree | d253987de47c3502c5885c5c865b307a92574d32 /llvm | |
parent | 03254cae951a87e4a2398d58f46efb7dc2a36191 (diff) | |
download | bcm5719-llvm-8ce99f296bcb31c11dcb85df62b13192972e8e74.tar.gz bcm5719-llvm-8ce99f296bcb31c11dcb85df62b13192972e8e74.zip |
Fix reg mask slot test, and preserve LiveIntervals and VirtRegMap in the PBQP
allocator. Fixes PR13945.
llvm-svn: 165201
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/CodeGen/RegAllocPBQP.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/RegAllocPBQP.cpp b/llvm/lib/CodeGen/RegAllocPBQP.cpp index fcdbce75d92..f2473681a5d 100644 --- a/llvm/lib/CodeGen/RegAllocPBQP.cpp +++ b/llvm/lib/CodeGen/RegAllocPBQP.cpp @@ -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. @@ -432,6 +432,7 @@ void RegAllocPBQP::getAnalysisUsage(AnalysisUsage &au) const { au.addRequired<SlotIndexes>(); au.addPreserved<SlotIndexes>(); au.addRequired<LiveIntervals>(); + au.addPreserved<LiveIntervals>(); //au.addRequiredID(SplitCriticalEdgesID); if (customPassID) au.addRequiredID(*customPassID); @@ -443,6 +444,7 @@ void RegAllocPBQP::getAnalysisUsage(AnalysisUsage &au) const { au.addRequired<MachineLoopInfo>(); au.addPreserved<MachineLoopInfo>(); au.addRequired<VirtRegMap>(); + au.addPreserved<VirtRegMap>(); MachineFunctionPass::getAnalysisUsage(au); } |