summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-02-02 17:41:18 +0000
committerReid Kleckner <rnk@google.com>2016-02-02 17:41:18 +0000
commit1fcd610c9499d8f1eb42f339926ed17ec6d98ddd (patch)
treeb80a02a7939d74d6657ce1523b272f81ea84b403 /llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h
parent7d6b924df841faff6893207044cc57b02464b255 (diff)
downloadbcm5719-llvm-1fcd610c9499d8f1eb42f339926ed17ec6d98ddd.tar.gz
bcm5719-llvm-1fcd610c9499d8f1eb42f339926ed17ec6d98ddd.zip
[codeview] Wire up the .cv_inline_linetable directive
This directive emits the binary annotations that describe line and code deltas in inlined call sites. Single-stepping through inlined frames in windbg now works. llvm-svn: 259535
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h
index 4883905e907..d9f38f3eaf8 100644
--- a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h
+++ b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h
@@ -48,7 +48,8 @@ class LLVM_LIBRARY_VISIBILITY CodeViewDebug : public AsmPrinterHandler {
MapVector<const DILocation *, InlineSite> InlineSites;
DebugLoc LastLoc;
- MCSymbol *End = nullptr;
+ const MCSymbol *Begin = nullptr;
+ const MCSymbol *End = nullptr;
unsigned FuncId = 0;
unsigned LastFileId = 0;
bool HaveLineInfo = false;
@@ -59,6 +60,10 @@ class LLVM_LIBRARY_VISIBILITY CodeViewDebug : public AsmPrinterHandler {
InlineSite &getInlineSite(const DILocation *Loc);
+ static void collectInlineSiteChildren(SmallVectorImpl<unsigned> &Children,
+ const FunctionInfo &FI,
+ const InlineSite &Site);
+
/// Remember some debug info about each function. Keep it in a stable order to
/// emit at the end of the TU.
MapVector<const Function *, FunctionInfo> FnDebugInfo;
@@ -66,6 +71,8 @@ class LLVM_LIBRARY_VISIBILITY CodeViewDebug : public AsmPrinterHandler {
/// Map from DIFile to .cv_file id.
DenseMap<const DIFile *, unsigned> FileIdMap;
+ SmallSetVector<const DISubprogram *, 4> InlinedSubprograms;
+
DenseMap<const DISubprogram *, codeview::TypeIndex> SubprogramToFuncId;
unsigned TypeCount = 0;
@@ -93,6 +100,8 @@ class LLVM_LIBRARY_VISIBILITY CodeViewDebug : public AsmPrinterHandler {
void emitTypeInformation();
+ void emitInlineeLinesSubsection();
+
void emitDebugInfoForFunction(const Function *GV, FunctionInfo &FI);
void emitInlinedCallSite(const FunctionInfo &FI, const DILocation *InlinedAt,
OpenPOWER on IntegriCloud