[PATCH] [RegisterScavenger] Fix handling of predicated instructions
Tobias Edler von Koch
tobias at codeaurora.org
Tue Jun 9 15:15:11 PDT 2015
REPOSITORY
rL LLVM
http://reviews.llvm.org/D9039
Files:
llvm/trunk/lib/CodeGen/RegisterScavenging.cpp
Index: llvm/trunk/lib/CodeGen/RegisterScavenging.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/RegisterScavenging.cpp
+++ llvm/trunk/lib/CodeGen/RegisterScavenging.cpp
@@ -103,10 +103,6 @@
// 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 @@
}
// Apply the mask.
- (isPred ? DefRegUnits : KillRegUnits) |= TmpRegUnits;
+ KillRegUnits |= TmpRegUnits;
}
if (!MO.isReg())
continue;
@@ -136,11 +132,11 @@
// 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);
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D9039.27410.patch
Type: text/x-patch
Size: 1313 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150609/931495a4/attachment.bin>
More information about the llvm-commits
mailing list