forked from OSchip/llvm-project
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
This commit is contained in:
parent
ed42e799dc
commit
05fee08dfa
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue