Re-apply r211399, "Generate native unwind info on Win64" with a fix to ignore SEH...
authorNAKAMURA Takumi <geek4civic@gmail.com>
Wed, 25 Jun 2014 12:41:52 +0000 (12:41 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Wed, 25 Jun 2014 12:41:52 +0000 (12:41 +0000)
commit1db5995d1419a5476f8f3974bdd1af20605885bc
tree3d60e8f0750bedc9a0d86c6382600b963e330ad6
parent3cf5c9de141a0456b85bbfaf3ab055c22256c5fc
Re-apply r211399, "Generate native unwind info on Win64" with a fix to ignore SEH pseudo ops in X86 JIT emitter.

--
This patch enables LLVM to emit Win64-native unwind info rather than
DWARF CFI.  It handles all corner cases (I hope), including stack
realignment.

Because the unwind info is not flexible enough to describe stack frames
with a gap of unknown size in the middle, such as the one caused by
stack realignment, I modified register spilling code to place all spills
into the fixed frame slots, so that they can be accessed relative to the
frame pointer.

Patch by Vadim Chugunov!

Reviewed By: rnk

Differential Revision: http://reviews.llvm.org/D4081

llvm-svn: 211691
20 files changed:
llvm/include/llvm/CodeGen/MachineFrameInfo.h
llvm/include/llvm/MC/MCAsmInfo.h
llvm/include/llvm/Target/TargetFrameLowering.h
llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp
llvm/lib/CodeGen/MachineFunction.cpp
llvm/lib/CodeGen/PrologEpilogInserter.cpp
llvm/lib/MC/MCObjectFileInfo.cpp
llvm/lib/MC/MCStreamer.cpp
llvm/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
llvm/lib/Target/X86/X86CodeEmitter.cpp
llvm/lib/Target/X86/X86FrameLowering.cpp
llvm/lib/Target/X86/X86FrameLowering.h
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86InstrCompiler.td
llvm/lib/Target/X86/X86MCInstLower.cpp
llvm/test/CodeGen/X86/2007-05-05-Personality.ll
llvm/test/CodeGen/X86/2009-06-03-Win64SpillXMM.ll
llvm/test/CodeGen/X86/avx-intel-ocl.ll
llvm/test/CodeGen/X86/gcc_except_table.ll
llvm/test/CodeGen/X86/win64_eh.ll [new file with mode: 0644]