diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2010-12-07 23:08:38 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2010-12-07 23:08:38 +0000 |
| commit | 775ead329379bd334ab011d52783d2facb8122a6 (patch) | |
| tree | db7ca307a4589d87ed6513844a86bc8eeb1a71b4 /llvm/lib/Target/ARM/ARMFrameInfo.h | |
| parent | fb116aed60d637876e9f87f9d5e9653301d091c4 (diff) | |
| download | bcm5719-llvm-775ead329379bd334ab011d52783d2facb8122a6.tar.gz bcm5719-llvm-775ead329379bd334ab011d52783d2facb8122a6.zip | |
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
Diffstat (limited to 'llvm/lib/Target/ARM/ARMFrameInfo.h')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMFrameInfo.h | 9 |
1 files changed, 5 insertions, 4 deletions
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<CalleeSavedInfo> &CSI, unsigned Opc, - bool isVarArg, bool(*Func)(unsigned, bool)) const; void emitPushInst(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector<CalleeSavedInfo> &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<CalleeSavedInfo> &CSI, unsigned Opc, + bool isVarArg, bool NoGap, + bool(*Func)(unsigned, bool)) const; }; } // End llvm namespace |

