diff options
Diffstat (limited to 'lib/CodeGen/RegisterScavenging.cpp')
-rw-r--r-- | lib/CodeGen/RegisterScavenging.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/lib/CodeGen/RegisterScavenging.cpp b/lib/CodeGen/RegisterScavenging.cpp index a34bd6341d22..4176686d1f7f 100644 --- a/lib/CodeGen/RegisterScavenging.cpp +++ b/lib/CodeGen/RegisterScavenging.cpp @@ -103,10 +103,6 @@ void RegScavenger::determineKillsAndDefs() { // Find out which registers are early clobbered, killed, defined, and marked // def-dead in this instruction. - // FIXME: The scavenger is not predication aware. If the instruction is - // predicated, conservatively assume "kill" markers do not actually kill the - // register. Similarly ignores "dead" markers. - bool isPred = TII->isPredicated(MI); KillRegUnits.reset(); DefRegUnits.reset(); for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) { @@ -124,7 +120,7 @@ void RegScavenger::determineKillsAndDefs() { } // Apply the mask. - (isPred ? DefRegUnits : KillRegUnits) |= TmpRegUnits; + KillRegUnits |= TmpRegUnits; } if (!MO.isReg()) continue; @@ -136,11 +132,11 @@ void RegScavenger::determineKillsAndDefs() { // Ignore undef uses. if (MO.isUndef()) continue; - if (!isPred && MO.isKill()) + if (MO.isKill()) addRegUnits(KillRegUnits, Reg); } else { assert(MO.isDef()); - if (!isPred && MO.isDead()) + if (MO.isDead()) addRegUnits(KillRegUnits, Reg); else addRegUnits(DefRegUnits, Reg); |