There are two forms for label debug information in DWARF format. 1. Labels in a non-inlined function: DW_TAG_label DW_AT_name DW_AT_decl_file DW_AT_decl_line DW_AT_low_pc 2. Labels in an inlined function: DW_TAG_label DW_AT_abstract_origin DW_AT_low_pc We will collect label information from DBG_LABEL. Before every DBG_LABEL, we will generate a temporary symbol to denote the location of the label. The symbol could be used to get DW_AT_low_pc afterwards. So, we create a mapping between 'inlined label' and DBG_LABEL MachineInstr in DebugHandlerBase. The DBG_LABEL in the mapping is used to query the symbol before it. The AbstractLabels in DwarfCompileUnit is used to process labels in inlined functions. We also keep a mapping between scope and labels in DwarfFile to help to generate correct tree structure of DIEs. It also generates label debug information under global isel. Differential Revision: https://reviews.llvm.org/D45556 llvm-svn: 340039
30 lines
540 B
CMake
30 lines
540 B
CMake
add_llvm_library(LLVMAsmPrinter
|
|
AccelTable.cpp
|
|
AddressPool.cpp
|
|
ARMException.cpp
|
|
AsmPrinter.cpp
|
|
AsmPrinterDwarf.cpp
|
|
AsmPrinterInlineAsm.cpp
|
|
DbgEntityHistoryCalculator.cpp
|
|
DebugHandlerBase.cpp
|
|
DebugLocStream.cpp
|
|
DIE.cpp
|
|
DIEHash.cpp
|
|
DwarfCFIException.cpp
|
|
DwarfCompileUnit.cpp
|
|
DwarfDebug.cpp
|
|
DwarfExpression.cpp
|
|
DwarfFile.cpp
|
|
DwarfStringPool.cpp
|
|
DwarfUnit.cpp
|
|
EHStreamer.cpp
|
|
ErlangGCPrinter.cpp
|
|
OcamlGCPrinter.cpp
|
|
WinCFGuard.cpp
|
|
WinException.cpp
|
|
CodeViewDebug.cpp
|
|
|
|
DEPENDS
|
|
intrinsics_gen
|
|
)
|