[PATCH] D27962: Get function start line number from DWARF info

David Blaikie via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 1 13:48:34 PST 2017

dblaikie accepted this revision.
dblaikie added a comment.
This revision is now accepted and ready to land.

Looks good - a few minor improvements/tidyups that'd be good.

Comment at: lib/DebugInfo/DWARF/DWARFContext.cpp:567-568
       Frame.FunctionName = Name;
+    Optional<uint64_t> DeclLineResult = FunctionDIE.getDeclLine();
+    if (DeclLineResult)
+      Frame.StartLine = *DeclLineResult;
Roll the declaration into the if condition:

  if (auto DeclLineResult = FunctionDIE.getDeclLine())

(up to you if you use auto - whatever you think's more readable)

Comment at: lib/DebugInfo/DWARF/DWARFDie.cpp:295-307
+  if (auto DeclLine = find(DW_AT_decl_line))
+    return DeclLine->getAsUnsignedConstant();
+  // Try to get name from specification DIE.
+  if (auto SpecDie = getAttributeValueAsReferencedDie(DW_AT_specification)) {
+    if (auto DeclLine = SpecDie.getDeclLine())
+      return DeclLine;
I think this whole function can now be implemented with this:

  return toUnsigned(findRecursively(DW_AT_line));

Comment at: test/tools/llvm-symbolizer/sym-verbose.test:28
 #CHECK-NEXT: Column: 3
+#CHECK-NEXT: Start line: 4
 #CHECK-NEXT: Discriminator: 1
Might be good to describe this as "Function start line" to be more clear (& maybe put it above "Line" - so that line/col/discrim are together, since they're closely related.


More information about the llvm-commits mailing list