diff options
| author | Robert Lytton <robert@xmos.com> | 2014-01-06 14:21:07 +0000 |
|---|---|---|
| committer | Robert Lytton <robert@xmos.com> | 2014-01-06 14:21:07 +0000 |
| commit | c8c4aa667b0d9de90eb17ab0aa953edf0fa9dc60 (patch) | |
| tree | 00d5aaa21f2f2397380f73cf73623357917b1a17 /llvm/lib/Target/XCore/XCoreFrameLowering.cpp | |
| parent | 5da175214bffc33e394bf7531a8de49a2649b58c (diff) | |
| download | bcm5719-llvm-c8c4aa667b0d9de90eb17ab0aa953edf0fa9dc60.tar.gz bcm5719-llvm-c8c4aa667b0d9de90eb17ab0aa953edf0fa9dc60.zip | |
XCore target: Lower EH_RETURN
llvm-svn: 198615
Diffstat (limited to 'llvm/lib/Target/XCore/XCoreFrameLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/XCore/XCoreFrameLowering.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Target/XCore/XCoreFrameLowering.cpp b/llvm/lib/Target/XCore/XCoreFrameLowering.cpp index 3d1fb9cafc1..109b74d445c 100644 --- a/llvm/lib/Target/XCore/XCoreFrameLowering.cpp +++ b/llvm/lib/Target/XCore/XCoreFrameLowering.cpp @@ -252,6 +252,15 @@ void XCoreFrameLowering::emitEpilogue(MachineFunction &MF, DebugLoc dl = MBBI->getDebugLoc(); unsigned RetOpcode = MBBI->getOpcode(); + if (RetOpcode == XCore::EH_RETURN) { + unsigned EhStackReg = MBBI->getOperand(0).getReg(); + unsigned EhHandlerReg = MBBI->getOperand(1).getReg(); + BuildMI(MBB, MBBI, dl, TII.get(XCore::SETSP_1r)).addReg(EhStackReg); + BuildMI(MBB, MBBI, dl, TII.get(XCore::BAU_1r)).addReg(EhHandlerReg); + MBB.erase(MBBI); // Erase the previous return instruction. + return; + } + // Work out frame sizes. // We will adjust the SP in stages towards the final FrameSize. int RemainingAdj = MFI->getStackSize(); |

