From 9452d6e4873fb787311748cbe4d4205054aad550 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Fri, 30 Oct 2015 00:02:55 +0000 Subject: [PATCH] [LLVMSymbolize] Simplify SymbolizableObjectFile::symbolizeInlinedCode(). NFC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251672 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/DebugInfo/DIContext.h | 4 +++ .../Symbolize/SymbolizableObjectFile.cpp | 26 +++++++------------ 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/include/llvm/DebugInfo/DIContext.h b/include/llvm/DebugInfo/DIContext.h index e98665f2b0d..1ca7b044df1 100644 --- a/include/llvm/DebugInfo/DIContext.h +++ b/include/llvm/DebugInfo/DIContext.h @@ -57,6 +57,10 @@ class DIInliningInfo { assert(Index < Frames.size()); return Frames[Index]; } + DILineInfo *getMutableFrame(unsigned Index) { + assert(Index < Frames.size()); + return &Frames[Index]; + } uint32_t getNumberOfFrames() const { return Frames.size(); } diff --git a/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp b/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp index fb2873e8159..d3a54ca8d47 100644 --- a/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp +++ b/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp @@ -217,26 +217,18 @@ DIInliningInfo SymbolizableObjectFile::symbolizeInlinedCode( if (InlinedContext.getNumberOfFrames() == 0) InlinedContext.addFrame(DILineInfo()); - if (FNKind != FunctionNameKind::LinkageName || !UseSymbolTable) - return InlinedContext; - // Override the function name in lower frame with name from symbol table. - // We can't directly change the last element of DIInliningInfo, so copy - // all frames into new context, replacing function name in the last one. - DIInliningInfo PatchedInlinedContext; - for (uint32_t i = 0, n = InlinedContext.getNumberOfFrames(); i < n; i++) { - DILineInfo LineInfo = InlinedContext.getFrame(i); - if (i == n - 1) { - std::string FunctionName; - uint64_t Start, Size; - if (getNameFromSymbolTable(SymbolRef::ST_Function, ModuleOffset, - FunctionName, Start, Size)) { - LineInfo.FunctionName = FunctionName; - } + if (FNKind == FunctionNameKind::LinkageName && UseSymbolTable) { + std::string FunctionName; + uint64_t Start, Size; + if (getNameFromSymbolTable(SymbolRef::ST_Function, ModuleOffset, + FunctionName, Start, Size)) { + InlinedContext.getMutableFrame(InlinedContext.getNumberOfFrames() - 1) + ->FunctionName = FunctionName; } - PatchedInlinedContext.addFrame(LineInfo); } - return PatchedInlinedContext; + + return InlinedContext; } DIGlobal SymbolizableObjectFile::symbolizeData(uint64_t ModuleOffset) const { -- 2.34.1