diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-09-29 20:12:33 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-09-29 20:12:33 +0000 |
commit | a80c1512861aa78f75a89b92275aaf2e92ff7fb9 (patch) | |
tree | b5d4c3efc67ff022eb8a71ad379dc01a1447a46f /llvm/lib/Target/X86/X86FrameLowering.cpp | |
parent | 81f005617e42e64b553a5ded37f1afac9b3fb4cc (diff) | |
download | bcm5719-llvm-a80c1512861aa78f75a89b92275aaf2e92ff7fb9.tar.gz bcm5719-llvm-a80c1512861aa78f75a89b92275aaf2e92ff7fb9.zip |
[WinEH] Teach AsmPrinter about funclets
Summary:
Funclets have been turned into functions by the time they hit the object
file. Make sure that they have decent names for the symbol table and
CFI directives explaining how to reason about their prologues.
Differential Revision: http://reviews.llvm.org/D13261
llvm-svn: 248824
Diffstat (limited to 'llvm/lib/Target/X86/X86FrameLowering.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86FrameLowering.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86FrameLowering.cpp b/llvm/lib/Target/X86/X86FrameLowering.cpp index e4c35b115e0..0e6b5c4b404 100644 --- a/llvm/lib/Target/X86/X86FrameLowering.cpp +++ b/llvm/lib/Target/X86/X86FrameLowering.cpp @@ -713,8 +713,6 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF, // Reset EBP / ESI to something good. MBBI = restoreWin32EHStackPointers(MBB, MBBI, DL); } else { - // FIXME: Add SEH directives. - NeedsWinCFI = false; // Immediately spill RDX into the home slot. The runtime cares about this. unsigned RDX = Uses64BitFramePtr ? X86::RDX : X86::EDX; // MOV64mr %rdx, 16(%rsp) @@ -727,6 +725,9 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF, BuildMI(MBB, MBBI, DL, TII.get(X86::PUSH64r)) .addReg(MachineFramePtr, RegState::Kill) .setMIFlag(MachineInstr::FrameSetup); + BuildMI(MBB, MBBI, DL, TII.get(X86::SEH_PushReg)) + .addImm(MachineFramePtr) + .setMIFlag(MachineInstr::FrameSetup); // MOV64rr %rdx, %rbp unsigned MOVrr = Uses64BitFramePtr ? X86::MOV64rr : X86::MOV32rr; BuildMI(MBB, MBBI, DL, TII.get(MOVrr), FramePtr) |