[llvm] r254555 - [llvm-dwp] Include only the non-empty columns in the cu_index

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 2 14:01:56 PST 2015


Author: dblaikie
Date: Wed Dec  2 16:01:56 2015
New Revision: 254555

URL: http://llvm.org/viewvc/llvm-project?rev=254555&view=rev
Log:
[llvm-dwp] Include only the non-empty columns in the cu_index

Modified:
    llvm/trunk/test/tools/llvm-dwp/X86/simple.test
    llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp

Modified: llvm/trunk/test/tools/llvm-dwp/X86/simple.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dwp/X86/simple.test?rev=254555&r1=254554&r2=254555&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-dwp/X86/simple.test (original)
+++ llvm/trunk/test/tools/llvm-dwp/X86/simple.test Wed Dec  2 16:01:56 2015
@@ -42,7 +42,11 @@ CHECK:     DW_AT_name {{.*}} "b"
 CHECK:     DW_TAG_formal_parameter
 
 CHECK: .debug_cu_index contents:
-FIXME: Emit and verify the cu_index contents
+Ensure only the relevant/contained sections are included in the table:
+CHECK: Index Signature          INFO                     ABBREV                   STR_OFFSETS
+Don't bother checking the Signatures, they aren't correct yet.
+CHECK:                          [0x00000000, 0x00000029) [0x00000000, 0x00000031) [0x00000000, 0x00000010)
+CHECK:                          [0x00000029, 0x0000005e) [0x00000031, 0x00000075) [0x00000010, 0x00000024)
 
 CHECK: .debug_str.dwo contents:
 CHECK: "clang version

Modified: llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp?rev=254555&r1=254554&r2=254555&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp (original)
+++ llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp Wed Dec  2 16:01:56 2015
@@ -157,9 +157,14 @@ static std::error_code write(MCStreamer
       return Err;
   }
 
+  unsigned Columns = 0;
+  for (auto &C : ContributionOffsets)
+    if (C)
+      ++Columns;
+
   Out.SwitchSection(MCOFI.getDwarfCUIndexSection());
   Out.EmitIntValue(2, 4);                   // Version
-  Out.EmitIntValue(8, 4);                   // Columns
+  Out.EmitIntValue(Columns, 4);             // Columns
   Out.EmitIntValue(IndexEntries.size(), 4); // Num Units
   // FIXME: This is not the right number of buckets for a real hash.
   Out.EmitIntValue(IndexEntries.size(), 4); // Num Buckets
@@ -173,18 +178,21 @@ static std::error_code write(MCStreamer
     Out.EmitIntValue(i + 1, 4);
 
   // Write the column headers (which sections will appear in the table)
-  for (size_t i = 1; i != 9; ++i)
-    Out.EmitIntValue(i, 4);
+  for (size_t i = 0; i != array_lengthof(ContributionOffsets); ++i)
+    if (ContributionOffsets[i])
+      Out.EmitIntValue(i + DW_SECT_INFO, 4);
 
   // Write the offsets.
   for (const auto &E : IndexEntries)
-    for (const auto &C : E.Contributions)
-      Out.EmitIntValue(C.Offset, 4);
+    for (size_t i = 0; i != array_lengthof(E.Contributions); ++i)
+      if (ContributionOffsets[i])
+        Out.EmitIntValue(E.Contributions[i].Offset, 4);
 
   // Write the lengths.
   for (const auto &E : IndexEntries)
-    for (const auto &C : E.Contributions)
-      Out.EmitIntValue(C.Length, 4);
+    for (size_t i = 0; i != array_lengthof(E.Contributions); ++i)
+      if (ContributionOffsets[i])
+        Out.EmitIntValue(E.Contributions[i].Length, 4);
 
   return std::error_code();
 }




More information about the llvm-commits mailing list