<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Nov 21, 2013 at 4:46 PM, Lang Hames <span dir="ltr"><<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: lhames<br>
Date: Thu Nov 21 18:46:32 2013<br>
New Revision: 195401<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=195401&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=195401&view=rev</a><br>
Log:<br>
Fix a typo where we were creating <def,kill> operands instead of<br>
<def,dead> ones.<br>
<br>
Add an assertion to make sure we catch this in the future.<br>
<br>
Fixes <rdar://problem/15464559>.<br>
<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/CodeGen/MachineOperand.h<br>
    llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGen/MachineOperand.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineOperand.h?rev=195401&r1=195400&r2=195401&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineOperand.h?rev=195401&r1=195400&r2=195401&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/include/llvm/CodeGen/MachineOperand.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGen/MachineOperand.h Thu Nov 21 18:46:32 2013<br>
@@ -564,6 +564,8 @@ public:<br>
                                   unsigned SubReg = 0,<br>
                                   bool isDebug = false,<br>
                                   bool isInternalRead = false) {<br>
+    assert(!(isDead && !isDef) && "Dead flag on non-def");<br>
+    assert(!(isKill && isDef) && "Kill flag on def");<br>
     MachineOperand Op(MachineOperand::MO_Register);<br>
     Op.IsDef = isDef;<br>
     Op.IsImp = isImp;<br>
<br>
Modified: llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp?rev=195401&r1=195400&r2=195401&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp?rev=195401&r1=195400&r2=195401&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp (original)<br>
+++ llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp Thu Nov 21 18:46:32 2013<br>
@@ -1934,7 +1934,8 @@ bool llvm::tryFoldSPUpdateIntoPushPop(Ma<br>
       return false;<br>
<br>
     // Mark the unimportant registers as <def,dead> in the POP.<br>
-    RegList.push_back(MachineOperand::CreateReg(CurReg, true, false, true));<br>
+    RegList.push_back(MachineOperand::CreateReg(CurReg, true, false, false,<br>
+                                                true));<br></blockquote><div><br></div><div>could/should this API be improved to be more legible? (a recent change to a similarly illegible API involved squashing all the bool flags into an enum bitfield as passing it as FOO | BAR, etc instead of "false, true, true" - alternatively two-value enums could be introduced separately for each parameter)</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
   }<br>
<br>
   if (RegsNeeded > 0)<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>