diff options
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) |