From 8ff48760a3df5c54a9181b8211efa5c7ac5c8aa4 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Sat, 1 Nov 2014 23:07:14 +0000 Subject: [PATCH] Remove DwarfUnit::LabelEnd in favor of computing the length of the section directly This was a compile-unit specific label (unused in type units) and seems unnecessary anyway when we can more easily directly compute the size of the compile unit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221067 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/DwarfCompileUnit.h | 4 ++++ lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 2 +- lib/CodeGen/AsmPrinter/DwarfFile.cpp | 1 - lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 2 -- lib/CodeGen/AsmPrinter/DwarfUnit.h | 8 -------- test/DebugInfo/X86/ref_addr_relocation.ll | 4 ++-- test/DebugInfo/dwarf-public-names.ll | 2 +- 7 files changed, 8 insertions(+), 15 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h index dd59024e786..a84c81e0bf5 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h @@ -173,6 +173,10 @@ public: this->SectionSym = SectionSym; } + unsigned getLength() { + return sizeof(uint32_t) + // Length field + getHeaderSize() + UnitDie.getSize(); + } }; } // end llvm namespace diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index bbac4794aad..ce59debe235 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1598,7 +1598,7 @@ void DwarfDebug::emitDebugPubSection( Asm->EmitSectionOffset(TheU->getLabelBegin(), TheU->getSectionSym()); Asm->OutStreamer.AddComment("Compilation Unit Length"); - Asm->EmitLabelDifference(TheU->getLabelEnd(), TheU->getLabelBegin(), 4); + Asm->EmitInt32(TheU->getLength()); // Emit the pubnames for this compilation unit. for (const auto &GI : Globals) { diff --git a/lib/CodeGen/AsmPrinter/DwarfFile.cpp b/lib/CodeGen/AsmPrinter/DwarfFile.cpp index d62e9bcc86c..89d38a2e3ae 100644 --- a/lib/CodeGen/AsmPrinter/DwarfFile.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfFile.cpp @@ -65,7 +65,6 @@ void DwarfFile::emitUnits(const MCSymbol *ASectionSym) { TheU->emitHeader(ASectionSym); DD.emitDIE(Die); - Asm->OutStreamer.EmitLabel(TheU->getLabelEnd()); } } diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 1b1d3edcc7e..bdcb8cc11ee 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -1750,8 +1750,6 @@ void DwarfUnit::initSection(const MCSection *Section) { this->Section = Section; this->LabelBegin = Asm->GetTempSymbol(Section->getLabelBeginName(), getUniqueID()); - this->LabelEnd = - Asm->GetTempSymbol(Section->getLabelEndName(), getUniqueID()); } void DwarfTypeUnit::emitHeader(const MCSymbol *ASectionSym) const { diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.h b/lib/CodeGen/AsmPrinter/DwarfUnit.h index 63fb79f0170..feb7ffa125a 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -132,9 +132,6 @@ protected: /// The start of the unit within its section. MCSymbol *LabelBegin; - /// The end of the unit within its section. - MCSymbol *LabelEnd; - DwarfUnit(unsigned UID, dwarf::Tag, DICompileUnit CU, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU); @@ -152,11 +149,6 @@ public: return LabelBegin; } - MCSymbol *getLabelEnd() const { - assert(Section); - return LabelEnd; - } - // Accessors. unsigned getUniqueID() const { return UniqueID; } uint16_t getLanguage() const { return CUNode.getLanguage(); } diff --git a/test/DebugInfo/X86/ref_addr_relocation.ll b/test/DebugInfo/X86/ref_addr_relocation.ll index efb8e9f0552..4d77322455d 100644 --- a/test/DebugInfo/X86/ref_addr_relocation.ll +++ b/test/DebugInfo/X86/ref_addr_relocation.ll @@ -23,7 +23,7 @@ ; CHECK: DW_TAG_variable ; CHECK: .long [[TYPE:.*]] # DW_AT_type ; CHECK: DW_TAG_structure_type -; CHECK: debug_info_end0 +; CHECK: debug_info_begin1 ; CHECK: DW_TAG_compile_unit ; CHECK-NOT: DW_TAG_structure_type ; This variable's type is in the 1st CU. @@ -31,7 +31,7 @@ ; Make sure this is relocatable. ; CHECK: .quad .Lsection_info+[[TYPE]] # DW_AT_type ; CHECK-NOT: DW_TAG_structure_type -; CHECK: debug_info_end1 +; CHECK: .section ; CHECK-DWARF: DW_TAG_compile_unit ; CHECK-DWARF: 0x[[ADDR:.*]]: DW_TAG_structure_type diff --git a/test/DebugInfo/dwarf-public-names.ll b/test/DebugInfo/dwarf-public-names.ll index f6d8cd343cd..890ab8af771 100644 --- a/test/DebugInfo/dwarf-public-names.ll +++ b/test/DebugInfo/dwarf-public-names.ll @@ -37,7 +37,7 @@ ; Skip the output to the header of the pubnames section. ; CHECK: debug_pubnames -; CHECK: version = 0x0002 +; CHECK: version = 0x0002 {{.*}} unit_size = 0x00000128 ; Check for each name in the output. ; CHECK-DAG: "ns" -- 2.34.1