CR feedback for r195166: Add comments regarding type unit mapping and type units...
authorDavid Blaikie <dblaikie@gmail.com>
Wed, 20 Nov 2013 18:40:16 +0000 (18:40 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Wed, 20 Nov 2013 18:40:16 +0000 (18:40 +0000)
Changes suggested by Manman Ren.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195262 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
lib/CodeGen/AsmPrinter/DwarfDebug.h

index 2489002f7fde3cd2039d126f3ac43894033e6faa..688791e04ff663fd76fdda72fa1697c099c7e479 100644 (file)
@@ -112,8 +112,13 @@ int64_t CompileUnit::getDefaultLowerBound() const {
 
 /// Check whether the DIE for this MDNode can be shared across CUs.
 static bool isShareableAcrossCUs(DIDescriptor D) {
-  // When the MDNode can be part of the type system, the DIE can be
-  // shared across CUs.
+  // When the MDNode can be part of the type system, the DIE can be shared
+  // across CUs.
+  // Combining type units and cross-CU DIE sharing is lower value (since
+  // cross-CU DIE sharing is used in LTO and removes type redundancy at that
+  // level already) but may be implementable for some value in projects
+  // building multiple independent libraries with LTO and then linking those
+  // together.
   return (D.isType() ||
           (D.isSubprogram() && !DISubprogram(D).isDefinition())) &&
          !GenerateTypeUnits;
index c3b1299731774a37064e3ab6cfd4f29d8e8c8212..5ba7cbf9d73a08769dd2cafc34a4704081b5535d 100644 (file)
@@ -443,7 +443,11 @@ class DwarfDebug {
     ImportedEntityMap;
   ImportedEntityMap ScopesWithImportedEntities;
 
-  // Holder for types that are going to be extracted out into a type unit.
+  // Map from type MDNodes to a pair used as a union. If the pointer is
+  // non-null, proxy DIEs in CUs meant to reference this type should be stored
+  // in the vector. The hash will be added to these DIEs once it is computed. If
+  // the pointer is null, the hash is immediately available in the uint64_t and
+  // should be directly used for proxy DIEs.
   DenseMap<const MDNode *, std::pair<uint64_t, SmallVectorImpl<DIE*>* > > TypeUnits;
 
   // Whether to emit the pubnames/pubtypes sections.