Generate compact unwind encoding from CFI directives.
authorBill Wendling <isanbard@gmail.com>
Mon, 9 Sep 2013 02:37:14 +0000 (02:37 +0000)
committerBill Wendling <isanbard@gmail.com>
Mon, 9 Sep 2013 02:37:14 +0000 (02:37 +0000)
commitc3cee57f7d20f69a84fd88464ed8cf050e63c7ad
tree709d211b7927dba1ef3414207993d651646b1aaf
parent959cd8f49bb85c8dfe971eb5a8a648ff41ca8ebd
Generate compact unwind encoding from CFI directives.

We used to generate the compact unwind encoding from the machine
instructions. However, this had the problem that if the user used `-save-temps'
or compiled their hand-written `.s' file (with CFI directives), we wouldn't
generate the compact unwind encoding.

Move the algorithm that generates the compact unwind encoding into the
MCAsmBackend. This way we can generate the encoding whether the code is from a
`.ll' or `.s' file.

<rdar://problem/13623355>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190290 91177308-0d34-0410-b5e6-96231b3b80d8
25 files changed:
include/llvm/MC/MCAsmBackend.h
include/llvm/MC/MCStreamer.h
include/llvm/Support/TargetRegistry.h
lib/CodeGen/LLVMTargetMachine.cpp
lib/MC/MCMachOStreamer.cpp
lib/MC/MCStreamer.cpp
lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h
lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h
lib/Target/R600/MCTargetDesc/AMDGPUAsmBackend.cpp
lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h
lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp
lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
lib/Target/X86/X86FrameLowering.cpp
lib/Target/X86/X86FrameLowering.h
test/CodeGen/X86/compact-unwind.ll
test/CodeGen/X86/no-compact-unwind.ll
tools/llvm-mc/llvm-mc.cpp