diff options
author | Reid Kleckner <reid@kleckner.net> | 2014-06-20 20:35:47 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2014-06-20 20:35:47 +0000 |
commit | 5b8e73ef81bdbc3ce4d020f66d875e22827b7626 (patch) | |
tree | 81e26866c3184143e4adec8bd26d003dc644245b /lib/Target/X86/X86ISelLowering.cpp | |
parent | 20dead8d0ce64f70e1dcf558f69b6d725ba18d9d (diff) | |
download | llvm-5b8e73ef81bdbc3ce4d020f66d875e22827b7626.tar.gz llvm-5b8e73ef81bdbc3ce4d020f66d875e22827b7626.tar.bz2 llvm-5b8e73ef81bdbc3ce4d020f66d875e22827b7626.tar.xz |
Generate native unwind info on Win64
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211399 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86ISelLowering.cpp')
-rw-r--r-- | lib/Target/X86/X86ISelLowering.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 09018a5e11..5cabd14064 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -605,9 +605,8 @@ void X86TargetLowering::resetOperationActions() { } // FIXME - use subtarget debug flags - if (!Subtarget->isTargetDarwin() && - !Subtarget->isTargetELF() && - !Subtarget->isTargetCygMing()) { + if (!Subtarget->isTargetDarwin() && !Subtarget->isTargetELF() && + !Subtarget->isTargetCygMing() && !Subtarget->isTargetWin64()) { setOperationAction(ISD::EH_LABEL, MVT::Other, Expand); } |