diff options
author | Jim Grosbach <grosbach@apple.com> | 2013-11-08 22:33:06 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2013-11-08 22:33:06 +0000 |
commit | dc7eb3e023e34adc9d40e93626467cfe22756f4c (patch) | |
tree | f5dafd3481b7c831e87e2b01938a171b2c01f365 /lib/Target/X86/MCTargetDesc | |
parent | de753f48535fb19cdd967af3bc3a743fa2a675ff (diff) | |
download | external_llvm-dc7eb3e023e34adc9d40e93626467cfe22756f4c.zip external_llvm-dc7eb3e023e34adc9d40e93626467cfe22756f4c.tar.gz external_llvm-dc7eb3e023e34adc9d40e93626467cfe22756f4c.tar.bz2 |
X86: Assembly files with .cfi_cfa_def shouldn't hit llvm_unreachable()
On darwin, when trying to create compact unwind info, a .cfi_cfa_def
directive would case an llvm_unreachable() to be hit. Back off when we
see this directive and generate the regular DWARF style eh_frame.
rdar://15406518
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194285 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/MCTargetDesc')
-rw-r--r-- | lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp b/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp index bac7481..7960542 100644 --- a/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp +++ b/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp @@ -450,7 +450,9 @@ protected: switch (Inst.getOperation()) { default: - llvm_unreachable("cannot handle CFI directive for compact unwind!"); + // Any other CFI directives indicate a frame that we aren't prepared + // to represent via compact unwind, so just bail out. + return 0; case MCCFIInstruction::OpDefCfaRegister: { // Defines a frame pointer. E.g. // |