Forgot about ARM::tPUSH. It also has a new writeback operand.
authorEvan Cheng <evan.cheng@apple.com>
Fri, 2 Oct 2009 05:03:07 +0000 (05:03 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 2 Oct 2009 05:03:07 +0000 (05:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83237 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/Thumb1InstrInfo.cpp
test/CodeGen/Thumb/push.ll [new file with mode: 0644]

index e1f9338bc3f53cafa38edc393aee8fbbc7b8498a..7eed30edf25c33e739798ca0b74eae10b668ab97 100644 (file)
@@ -156,6 +156,7 @@ spillCalleeSavedRegisters(MachineBasicBlock &MBB,
 
   MachineInstrBuilder MIB = BuildMI(MBB, MI, DL, get(ARM::tPUSH));
   AddDefaultPred(MIB);
+  MIB.addReg(0); // No write back.
   for (unsigned i = CSI.size(); i != 0; --i) {
     unsigned Reg = CSI[i-1].getReg();
     // Add the callee-saved register as live-in. It's killed at the spill.
diff --git a/test/CodeGen/Thumb/push.ll b/test/CodeGen/Thumb/push.ll
new file mode 100644 (file)
index 0000000..63773c4
--- /dev/null
@@ -0,0 +1,10 @@
+; RUN: llc < %s -mtriple=thumb-apple-darwin -disable-fp-elim | FileCheck %s
+; rdar://7268481
+
+define arm_apcscc void @t() nounwind {
+; CHECK:       t:
+; CHECK-NEXT : push {r7}
+entry:
+  call void asm sideeffect ".long 0xe7ffdefe", ""() nounwind
+  ret void
+}