llvm-project/llvm/lib/CodeGen/AsmPrinter
Heejin Ahn 0981eaab47 [WebAssembly] LSDA info generation
Summary:
This adds support for LSDA (exception table) generation for wasm EH.
Wasm EH mostly follows the structure of Itanium-style exception tables,
with one exception: a call site table entry in wasm EH corresponds to
not a call site but a landing pad.

In wasm EH, the VM is responsible for stack unwinding. After an
exception occurs and the stack is unwound, the control flow is
transferred to wasm 'catch' instruction by the VM, after which the
personality function is called from the compiler-generated code. (Refer
to WasmEHPrepare pass for more information on this part.)

This patch:
- Changes wasm.landingpad.index intrinsic to take a token argument, to
make this 1:1 match with a catchpad instruction
- Stores landingpad index info and catch type info MachineFunction in
before instruction selection
- Lowers wasm.lsda intrinsic to an MCSymbol pointing to the start of an
exception table
- Adds WasmException class with overridden methods for table generation
- Adds support for LSDA section in Wasm object writer

Reviewers: dschuff, sbc100, rnk

Subscribers: mgorny, jgravelle-google, sunfish, llvm-commits

Differential Revision: https://reviews.llvm.org/D52748

llvm-svn: 344575
2018-10-16 00:09:12 +00:00
..
ARMException.cpp Use assembler expressions to lay out the EH LSDA. 2018-02-09 17:00:25 +00:00
AccelTable.cpp DebugInfo: Fix skipping CUs in DWARFv5 debug_names table 2018-08-24 20:31:05 +00:00
AddressPool.cpp [DWARF] - Emit the correct value for DW_AT_addr_base. 2018-09-20 09:17:36 +00:00
AddressPool.h [DWARF] - Emit the correct value for DW_AT_addr_base. 2018-09-20 09:17:36 +00:00
AsmPrinter.cpp [WebAssembly] LSDA info generation 2018-10-16 00:09:12 +00:00
AsmPrinterDwarf.cpp Revert r343317 2018-09-28 17:01:50 +00:00
AsmPrinterHandler.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
AsmPrinterInlineAsm.cpp [CodeGen] emit inline asm clobber list warnings for reserved (cont) 2018-08-30 12:52:35 +00:00
ByteStreamer.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
CMakeLists.txt [WebAssembly] LSDA info generation 2018-10-16 00:09:12 +00:00
CodeViewDebug.cpp [codeview] Emit S_BUILDINFO and LF_BUILDINFO with cwd and source file 2018-10-12 18:19:06 +00:00
CodeViewDebug.h [codeview] Emit S_BUILDINFO and LF_BUILDINFO with cwd and source file 2018-10-12 18:19:06 +00:00
DIE.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
DIEHash.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
DIEHash.h Fix -Wdocumentation warning. NFCI. 2018-07-18 09:07:54 +00:00
DIEHashAttributes.def
DbgEntityHistoryCalculator.cpp [DebugInfo] Do not generate label debug info if it has been processed. 2018-09-06 02:22:06 +00:00
DbgEntityHistoryCalculator.h [DebugInfo] Do not generate label debug info if it has been processed. 2018-09-06 02:22:06 +00:00
DebugHandlerBase.cpp [DebugInfo] Generate DWARF debug information for labels. (Fix leak problems) 2018-08-17 15:22:04 +00:00
DebugHandlerBase.h [DebugInfo] Generate DWARF debug information for labels. (Fix leak problems) 2018-08-17 15:22:04 +00:00
DebugLocEntry.h llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...) 2018-09-27 02:13:45 +00:00
DebugLocStream.cpp
DebugLocStream.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
DwarfCFIException.cpp Move TargetLoweringObjectFile from CodeGen to Target to fix layering 2018-03-23 23:58:19 +00:00
DwarfCompileUnit.cpp [DebugInfo] Add support for DWARF5 call site-related attributes 2018-10-05 20:37:17 +00:00
DwarfCompileUnit.h [DebugInfo] Add support for DWARF5 call site-related attributes 2018-10-05 20:37:17 +00:00
DwarfDebug.cpp Revert BTF commit series. 2018-10-12 19:41:05 +00:00
DwarfDebug.h Revert BTF commit series. 2018-10-12 19:41:05 +00:00
DwarfException.h Use assembler expressions to lay out the EH LSDA. 2018-02-09 17:00:25 +00:00
DwarfExpression.cpp [DebugInfo] Normalize common kinds of DWARF sub-expressions. 2018-09-05 10:18:36 +00:00
DwarfExpression.h [DebugInfo] Normalize common kinds of DWARF sub-expressions. 2018-09-05 10:18:36 +00:00
DwarfFile.cpp Revert BTF commit series. 2018-10-12 19:41:05 +00:00
DwarfFile.h Revert BTF commit series. 2018-10-12 19:41:05 +00:00
DwarfStringPool.cpp Use the container form llvm::sort(C, ...) 2018-09-30 22:31:29 +00:00
DwarfStringPool.h [DebugInfo] Reduce debug_str_offsets section size 2018-08-07 09:54:52 +00:00
DwarfUnit.cpp [DWARF] - Emit the correct value for DW_AT_addr_base. 2018-09-20 09:17:36 +00:00
DwarfUnit.h [DWARF] - Emit the correct value for DW_AT_addr_base. 2018-09-20 09:17:36 +00:00
EHStreamer.cpp [WebAssembly] LSDA info generation 2018-10-16 00:09:12 +00:00
EHStreamer.h [WebAssembly] LSDA info generation 2018-10-16 00:09:12 +00:00
ErlangGCPrinter.cpp Style update. NFC. 2018-03-29 23:32:54 +00:00
LLVMBuild.txt Update libdeps to add BinaryFormat, introduced in r304864. 2017-06-07 04:48:49 +00:00
OcamlGCPrinter.cpp Style update. NFC. 2018-03-29 23:32:54 +00:00
WasmException.cpp [WebAssembly] LSDA info generation 2018-10-16 00:09:12 +00:00
WasmException.h [WebAssembly] LSDA info generation 2018-10-16 00:09:12 +00:00
WinCFGuard.cpp Reland "Emit Function IDs table for Control Flow Guard" 2018-01-09 23:49:30 +00:00
WinCFGuard.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
WinException.cpp Move TargetLoweringObjectFile from CodeGen to Target to fix layering 2018-03-23 23:58:19 +00:00
WinException.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00