summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h
diff options
context:
space:
mode:
authorShiva Chen <shiva0217@gmail.com>2018-07-24 02:22:55 +0000
committerShiva Chen <shiva0217@gmail.com>2018-07-24 02:22:55 +0000
commitd6b2cdf9d4053ade22ad58379df7d12389ba3d1b (patch)
tree802f38b9edce3762f105845980436dc48fd74af0 /llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.h
parentb7f19e6d1e7be2f0607d401b166b5e5355bd3dd1 (diff)
downloadbcm5719-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.h5
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.
OpenPOWER on IntegriCloud