diff --git a/lib/Target/ARM/Thumb1InstrInfo.cpp b/lib/Target/ARM/Thumb1InstrInfo.cpp index e1f9338bc3f..7eed30edf25 100644 --- a/lib/Target/ARM/Thumb1InstrInfo.cpp +++ b/lib/Target/ARM/Thumb1InstrInfo.cpp @@ -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 index 00000000000..63773c4f6c9 --- /dev/null +++ b/test/CodeGen/Thumb/push.ll @@ -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 +}