From 775ead329379bd334ab011d52783d2facb8122a6 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Tue, 7 Dec 2010 23:08:38 +0000 Subject: Fix a bad prologue / epilogue codegen bug where the compiler would emit illegal vpush instructions to save / restore VFP / NEON registers like this: vpush {d8,d10,d11} vpop {d8,d10,d11} vpush and vpop do not allow gaps in the register list. rdar://8728956 llvm-svn: 121197 --- llvm/lib/Target/ARM/ARMFrameInfo.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'llvm/lib/Target/ARM/ARMFrameInfo.h') diff --git a/llvm/lib/Target/ARM/ARMFrameInfo.h b/llvm/lib/Target/ARM/ARMFrameInfo.h index 886f7492ab5..2ff77b4b49f 100644 --- a/llvm/lib/Target/ARM/ARMFrameInfo.h +++ b/llvm/lib/Target/ARM/ARMFrameInfo.h @@ -58,12 +58,13 @@ public: RegScavenger *RS) const; private: - void emitPopInst(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, - const std::vector &CSI, unsigned Opc, - bool isVarArg, bool(*Func)(unsigned, bool)) const; void emitPushInst(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector &CSI, unsigned Opc, - bool(*Func)(unsigned, bool)) const; + bool NoGap, bool(*Func)(unsigned, bool)) const; + void emitPopInst(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, + const std::vector &CSI, unsigned Opc, + bool isVarArg, bool NoGap, + bool(*Func)(unsigned, bool)) const; }; } // End llvm namespace -- cgit v1.2.3