diff options
author | Shiva Chen <shiva0217@gmail.com> | 2018-07-24 02:22:55 +0000 |
---|---|---|
committer | Shiva Chen <shiva0217@gmail.com> | 2018-07-24 02:22:55 +0000 |
commit | d6b2cdf9d4053ade22ad58379df7d12389ba3d1b (patch) | |
tree | 802f38b9edce3762f105845980436dc48fd74af0 /llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h | |
parent | b7f19e6d1e7be2f0607d401b166b5e5355bd3dd1 (diff) | |
download | bcm5719-llvm-d6b2cdf9d4053ade22ad58379df7d12389ba3d1b.tar.gz bcm5719-llvm-d6b2cdf9d4053ade22ad58379df7d12389ba3d1b.zip |
[DebugInfo] Generate DWARF debug information for labels.
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.
Differential Revision: https://reviews.llvm.org/D45556
Patch by Hsiangkai Wang.
llvm-svn: 337799
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h index 1ccefe32be7..4b0ce0e3f03 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h +++ b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h @@ -16,7 +16,7 @@ #define LLVM_LIB_CODEGEN_ASMPRINTER_DEBUGHANDLERBASE_H #include "AsmPrinterHandler.h" -#include "DbgValueHistoryCalculator.h" +#include "DbgEntityHistoryCalculator.h" #include "llvm/ADT/Optional.h" #include "llvm/CodeGen/LexicalScopes.h" #include "llvm/CodeGen/MachineInstr.h" @@ -82,6 +82,9 @@ protected: /// variable. Variables are listed in order of appearance. DbgValueHistoryMap DbgValues; + /// Mapping of inlined labels and DBG_LABEL machine instruction. + DbgLabelInstrMap DbgLabels; + /// Maps instruction with label emitted before instruction. /// FIXME: Make this private from DwarfDebug, we have the necessary accessors /// for it. |