Sink dwarf unit length emission down into DwarfUnit::emitHeader
authorDavid Blaikie <dblaikie@gmail.com>
Sat, 1 Nov 2014 23:59:23 +0000 (23:59 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Sat, 1 Nov 2014 23:59:23 +0000 (23:59 +0000)
This allows the CU label to be emitted only for compile units, as
they're the only ones that need it (so they can be referenced from
pubnames)

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

lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
lib/CodeGen/AsmPrinter/DwarfFile.cpp
lib/CodeGen/AsmPrinter/DwarfUnit.cpp

index d214e36677f9426c57ba8ab21d8199b2d9334534..885be61b7c9414e03246a196432ed022637c5e2c 100644 (file)
@@ -686,4 +686,12 @@ void DwarfCompileUnit::collectDeadVariables(DISubprogram SP) {
   }
 }
 
+void DwarfCompileUnit::emitHeader(const MCSymbol *ASectionSym) const {
+  // Emit the compile units header.
+  Asm->OutStreamer.EmitLabel(LabelBegin);
+
+  DwarfUnit::emitHeader(ASectionSym);
+}
+
+
 } // end llvm namespace
index a84c81e0bf5e67590896e8e578976a7f124f2cfe..def0cf78c6c5687946c061cf576e0cb56dca08e7 100644 (file)
@@ -177,6 +177,8 @@ public:
     return sizeof(uint32_t) + // Length field
         getHeaderSize() + UnitDie.getSize();
   }
+
+  void emitHeader(const MCSymbol *ASectionSym) const override;
 };
 
 } // end llvm namespace
index 89d38a2e3aef52b235502b2f213b144bf1d99858..50180ea0a164c7579c574c3bad70c6e0c0d49127 100644 (file)
@@ -55,13 +55,6 @@ void DwarfFile::emitUnits(const MCSymbol *ASectionSym) {
     const MCSection *USection = TheU->getSection();
     Asm->OutStreamer.SwitchSection(USection);
 
-    // Emit the compile units header.
-    Asm->OutStreamer.EmitLabel(TheU->getLabelBegin());
-
-    // Emit size of content not including length itself
-    Asm->OutStreamer.AddComment("Length of Unit");
-    Asm->EmitInt32(TheU->getHeaderSize() + Die.getSize());
-
     TheU->emitHeader(ASectionSym);
 
     DD.emitDIE(Die);
index bdcb8cc11eed3e520ff3303755904dc18a9b051f..2086c8d84d45173e63b2647e4cb15173dbf61943 100644 (file)
@@ -1730,6 +1730,10 @@ DIE *DwarfUnit::getOrCreateStaticMemberDIE(DIDerivedType DT) {
 }
 
 void DwarfUnit::emitHeader(const MCSymbol *ASectionSym) const {
+  // Emit size of content not including length itself
+  Asm->OutStreamer.AddComment("Length of Unit");
+  Asm->EmitInt32(getHeaderSize() + UnitDie.getSize());
+
   Asm->OutStreamer.AddComment("DWARF version number");
   Asm->EmitInt16(DD->getDwarfVersion());
   Asm->OutStreamer.AddComment("Offset Into Abbrev. Section");