[llvm] r251672 - [LLVMSymbolize] Simplify SymbolizableObjectFile::symbolizeInlinedCode(). NFC.

Alexey Samsonov via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 29 17:02:56 PDT 2015


Author: samsonov
Date: Thu Oct 29 19:02:55 2015
New Revision: 251672

URL: http://llvm.org/viewvc/llvm-project?rev=251672&view=rev
Log:
[LLVMSymbolize] Simplify SymbolizableObjectFile::symbolizeInlinedCode(). NFC.

Modified:
    llvm/trunk/include/llvm/DebugInfo/DIContext.h
    llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp

Modified: llvm/trunk/include/llvm/DebugInfo/DIContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/DIContext.h?rev=251672&r1=251671&r2=251672&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/DIContext.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/DIContext.h Thu Oct 29 19:02:55 2015
@@ -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();
   }

Modified: llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp?rev=251672&r1=251671&r2=251672&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp (original)
+++ llvm/trunk/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp Thu Oct 29 19:02:55 2015
@@ -217,26 +217,18 @@ DIInliningInfo SymbolizableObjectFile::s
   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 {




More information about the llvm-commits mailing list