diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-08-27 05:04:14 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-08-27 05:04:14 +0000 |
commit | c13bc97e586a14189b7af79f68d91dfab34dffcc (patch) | |
tree | a50b4c886a7fd45d88bb92806ae80e860fe21bd0 | |
parent | 588bd9b7f869578e80c4359694425a5fd20e3ebd (diff) | |
download | bcm5719-llvm-c13bc97e586a14189b7af79f68d91dfab34dffcc.tar.gz bcm5719-llvm-c13bc97e586a14189b7af79f68d91dfab34dffcc.zip |
Remove type unit skeletons. GDB no longer needs them & this saves a heap of space.
llvm-svn: 216521
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 23 | ||||
-rw-r--r-- | llvm/test/DebugInfo/X86/generate-odr-hash.ll | 24 |
2 files changed, 7 insertions, 40 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 77fd778df52..58bc96daf26 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -2481,24 +2481,6 @@ DwarfCompileUnit &DwarfDebug::constructSkeletonCU(const DwarfCompileUnit &CU) { return NewCU; } -// This DIE has the following attributes: DW_AT_comp_dir, DW_AT_dwo_name, -// DW_AT_addr_base. -DwarfTypeUnit &DwarfDebug::constructSkeletonTU(DwarfTypeUnit &TU) { - DwarfCompileUnit &CU = static_cast<DwarfCompileUnit &>( - *SkeletonHolder.getUnits()[TU.getCU().getUniqueID()]); - - auto OwnedUnit = make_unique<DwarfTypeUnit>(TU.getUniqueID(), CU, Asm, this, - &SkeletonHolder); - DwarfTypeUnit &NewTU = *OwnedUnit; - NewTU.setTypeSignature(TU.getTypeSignature()); - NewTU.setType(nullptr); - NewTU.initSection( - Asm->getObjFileLowering().getDwarfTypesSection(TU.getTypeSignature())); - - initSkeletonUnit(TU, NewTU.getUnitDie(), std::move(OwnedUnit)); - return NewTU; -} - // Emit the .debug_info.dwo section for separated dwarf. This contains the // compile units that would normally be in debug_info. void DwarfDebug::emitDebugInfoDWO() { @@ -2621,11 +2603,8 @@ void DwarfDebug::addDwarfTypeUnitType(DwarfCompileUnit &CU, // If the type wasn't dependent on fission addresses, finish adding the type // and all its dependent types. - for (auto &TU : TypeUnitsToAdd) { - if (useSplitDwarf()) - TU.first->setSkeleton(constructSkeletonTU(*TU.first)); + for (auto &TU : TypeUnitsToAdd) InfoHolder.addUnit(std::move(TU.first)); - } } CU.addDIETypeSignature(RefDie, NewTU); } diff --git a/llvm/test/DebugInfo/X86/generate-odr-hash.ll b/llvm/test/DebugInfo/X86/generate-odr-hash.ll index a232e2f76e7..5f58741c8e0 100644 --- a/llvm/test/DebugInfo/X86/generate-odr-hash.ll +++ b/llvm/test/DebugInfo/X86/generate-odr-hash.ll @@ -2,11 +2,11 @@ ; RUN: llc < %s -o %t -filetype=obj -O0 -generate-type-units -mtriple=x86_64-unknown-linux-gnu ; RUN: llvm-dwarfdump %t | FileCheck --check-prefix=CHECK --check-prefix=SINGLE %s -; RUN: llvm-readobj -s -t %t | FileCheck --check-prefix=OBJ_COMMON %s +; RUN: llvm-readobj -s -t %t | FileCheck --check-prefix=OBJ_SINGLE %s ; RUN: llc < %s -split-dwarf=Enable -o %t -filetype=obj -O0 -generate-type-units -mtriple=x86_64-unknown-linux-gnu ; RUN: llvm-dwarfdump %t | FileCheck --check-prefix=CHECK --check-prefix=FISSION %s -; RUN: llvm-readobj -s -t %t | FileCheck --check-prefix=OBJ_COMMON --check-prefix=OBJ_FISSION %s +; RUN: llvm-readobj -s -t %t | FileCheck --check-prefix=OBJ_FISSION %s ; Generated from bar.cpp: @@ -74,20 +74,8 @@ ; CHECK-NEXT: DW_AT_declaration ; CHECK-NEXT: DW_AT_signature {{.*}} (0xfd756cee88f8a118) -; FISSION-LABEL: .debug_types contents: -; FISSION-NOT: type_signature -; FISSION-LABEL: type_signature = 0x1d02f3be30cc5688 -; FISSION: DW_TAG_type_unit -; FISSION-NEXT: DW_AT_GNU_dwo_name{{.*}}"bar.dwo" -; FISSION-NEXT: DW_AT_comp_dir{{.*}}"/tmp/dbginfo" -; FISSION-NOT: type_signature -; FISSION-LABEL: type_signature = 0xb04af47397402e77 -; FISSION-NOT: type_signature -; FISSION-LABEL: type_signature = 0xfd756cee88f8a118 -; FISSION-NOT: type_signature -; FISSION-LABEL: type_signature = 0xe94f6d3843e62d6b - ; SINGLE-LABEL: .debug_types contents: +; FISSION-NOT: .debug_types contents: ; FISSION-LABEL: .debug_types.dwo contents: ; Check that we generate a hash for bar and the value. @@ -166,9 +154,9 @@ ; Make sure debug_types are in comdat groups. This could be more rigid to check ; that they're the right comdat groups (each type in a separate comdat group, ; etc) -; OBJ_COMMON: Name: .debug_types ( -; OBJ_COMMON-NOT: } -; OBJ_COMMON: SHF_GROUP +; OBJ_SINGLE: Name: .debug_types ( +; OBJ_SINGLE-NOT: } +; OBJ_SINGLE: SHF_GROUP ; Fission type units don't go in comdat groups, since their linker is debug ; aware it's handled using the debug info semantics rather than raw ELF object |