diff options
author | Reid Kleckner <rnk@google.com> | 2016-02-02 17:41:18 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-02-02 17:41:18 +0000 |
commit | 1fcd610c9499d8f1eb42f339926ed17ec6d98ddd (patch) | |
tree | b80a02a7939d74d6657ce1523b272f81ea84b403 /llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h | |
parent | 7d6b924df841faff6893207044cc57b02464b255 (diff) | |
download | bcm5719-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.h | 11 |
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, |