[llvm] r304020 - DebugInfo: Do not emit empty CUs

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Fri May 26 15:11:47 PDT 2017


Sorry for the noise, should be addressed in r304042

On Fri, May 26, 2017 at 2:03 PM Vedant Kumar <vsk at apple.com> wrote:

> Hi David,
>
> I think this change may be causing a test failure on our incremental bot:
>
>
> http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental_check/36948/
>
> The affected test started passing after I reverted your commit locally. Is
> there a chance your change drops the DICompileUnit defined in the test
> file? It looks like there's a "@debug_info" function which tries to access
> that information in some way (though I admit, I don't really follow what's
> happening here).
>
> Here is the test error:
>
> ******************** TEST 'LLVM :: CodeGen/ARM/arm-shrink-wrapping.ll'
> FAILED ********************
>
> Script:
> --
> /Users/buildslave/jenkins/sharedspace/incremental at 2/clang-build/./bin/llc
> /Users/buildslave/jenkins/sharedspace/incremental at 2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
> -o - -enable-shrink-wrap=true -ifcvt-fn-start=1 -ifcvt-fn-stop=0
> -mtriple=armv7-apple-ios       |
> /Users/buildslave/jenkins/sharedspace/incremental at 2/clang-build/./bin/FileCheck
> /Users/buildslave/jenkins/sharedspace/incremental at 2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
> --check-prefix=CHECK --check-prefix=ARM --check-prefix=ENABLE
> --check-prefix=ARM-ENABLE
> /Users/buildslave/jenkins/sharedspace/incremental at 2/clang-build/./bin/llc
> /Users/buildslave/jenkins/sharedspace/incremental at 2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
> -o - -enable-shrink-wrap=false -ifcvt-fn-start=1 -ifcvt-fn-stop=0
> -mtriple=armv7-apple-ios       |
> /Users/buildslave/jenkins/sharedspace/incremental at 2/clang-build/./bin/FileCheck
> /Users/buildslave/jenkins/sharedspace/incremental at 2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
> --check-prefix=CHECK --check-prefix=ARM --check-prefix=DISABLE
> --check-prefix=ARM-DISABLE
> /Users/buildslave/jenkins/sharedspace/incremental at 2/clang-build/./bin/llc
> /Users/buildslave/jenkins/sharedspace/incremental at 2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
> -o - -enable-shrink-wrap=true -ifcvt-fn-start=1 -ifcvt-fn-stop=0
> -mtriple=thumbv7-apple-ios       |
> /Users/buildslave/jenkins/sharedspace/incremental at 2/clang-build/./bin/FileCheck
> /Users/buildslave/jenkins/sharedspace/incremental at 2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
> --check-prefix=CHECK --check-prefix=THUMB --check-prefix=ENABLE
> --check-prefix=THUMB-ENABLE
> /Users/buildslave/jenkins/sharedspace/incremental at 2/clang-build/./bin/llc
> /Users/buildslave/jenkins/sharedspace/incremental at 2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
> -o - -enable-shrink-wrap=false -ifcvt-fn-start=1 -ifcvt-fn-stop=0
> -mtriple=thumbv7-apple-ios       |
> /Users/buildslave/jenkins/sharedspace/incremental at 2/clang-build/./bin/FileCheck
> /Users/buildslave/jenkins/sharedspace/incremental at 2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
> --check-prefix=CHECK --check-prefix=THUMB --check-prefix=DISABLE
> --check-prefix=THUMB-DISABLE
> --
> Exit Code: 1
>
> Command Output (stderr):
> --
>
> /Users/buildslave/jenkins/sharedspace/incremental at 2/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll:659:10:
> error: expected string not found in input
>
> ; CHECK: bl
>          ^
> <stdin>:375:7: note: scanning from here
>  vldr s0, LCPI12_0
>       ^
> <stdin>:377:2: note: possible intended match here
>  bx lr
>
>  ^
>
> best,
> vedant
>
>
> > On May 26, 2017, at 11:52 AM, David Blaikie via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
> >
> > Author: dblaikie
> > Date: Fri May 26 13:52:56 2017
> > New Revision: 304020
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=304020&view=rev
> > Log:
> > DebugInfo: Do not emit empty CUs
> >
> > Consistent with GCC and addresses a shortcoming with ThinLTO where many
> > imported CUs may end up being empty (because the functions imported from
> > them either ended up not being used (and were then discarded, since
> > they're imported as available_externally) or optimized away entirely).
> >
> > Test cases previously testing empty CUs (either intentionally, or
> > because they didn't need anything more complicated) had a trivial 'int'
> > or similar basic type added to their retained types list.
> >
> > This is a first order approximation - a deeper implementation could do
> > things like:
> >
> > 1) Be more lazy about construction of the CU - for example if two CUs
> > containing a single identical retained type are linked together, with
> > this change one of the two CUs will be produced but empty (since a
> > duplicate type won't be produced).
> >
> > 2) Go further and invert all the CU links the same way the subprogram
> > link is inverted - keep named CU lists of retained types, macros, etc,
> > and have those link back to the CU. Then if they're emitted, the CU is
> > emitted, but never otherwise - this would allow the metadata itself to
> > be dropped earlier too, though it seems unlikely that's an important
> > optimization as there shouldn't be many CUs relative to the number of
> > other entities.
> >
> > Added:
> >    llvm/trunk/test/DebugInfo/omit-empty.ll
> >      - copied, changed from r304018, llvm/trunk/test/DebugInfo/dwo.ll
> > Modified:
> >    llvm/trunk/include/llvm/IR/Metadata.h
> >    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> >    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
> >    llvm/trunk/test/DebugInfo/Generic/empty.ll
> >    llvm/trunk/test/DebugInfo/Generic/nodebug.ll
> >    llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll
> >    llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll
> >    llvm/trunk/test/DebugInfo/X86/debug-macro.ll
> >    llvm/trunk/test/DebugInfo/X86/empty.ll
> >    llvm/trunk/test/DebugInfo/X86/fission-hash.ll
> >    llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll
> >    llvm/trunk/test/DebugInfo/dwo.ll
> >    llvm/trunk/test/DebugInfo/skeletoncu.ll
> >
> > Modified: llvm/trunk/include/llvm/IR/Metadata.h
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Metadata.h?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/include/llvm/IR/Metadata.h (original)
> > +++ llvm/trunk/include/llvm/IR/Metadata.h Fri May 26 13:52:56 2017
> > @@ -1223,6 +1223,7 @@ public:
> >
> >   // FIXME: Fix callers and remove condition on N.
> >   unsigned size() const { return N ? N->getNumOperands() : 0u; }
> > +  bool empty() const { return N ? N->getNumOperands() == 0 : true; }
> >   T *operator[](unsigned I) const { return
> cast_or_null<T>(N->getOperand(I)); }
> >
> >   // FIXME: Fix callers and remove condition on N.
> >
> > Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> > +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Fri May 26 13:52:56
> 2017
> > @@ -374,7 +374,7 @@ void DwarfDebug::constructAbstractSubpro
> >
> >   // Find the subprogram's DwarfCompileUnit in the SPMap in case the
> subprogram
> >   // was inlined from another compile unit.
> > -  auto &CU = *CUMap.lookup(SP->getUnit());
> > +  auto &CU = getOrCreateDwarfCompileUnit(SP->getUnit());
> >   if (auto *SkelCU = CU.getSkeleton()) {
> >     (shareAcrossDWOCUs() ? CU : SrcCU)
> >         .constructAbstractSubprogramScopeDIE(Scope);
> > @@ -407,7 +407,9 @@ void DwarfDebug::addGnuPubAttributes(Dwa
> > // Create new DwarfCompileUnit for the given metadata node with tag
> > // DW_TAG_compile_unit.
> > DwarfCompileUnit &
> > -DwarfDebug::constructDwarfCompileUnit(const DICompileUnit *DIUnit) {
> > +DwarfDebug::getOrCreateDwarfCompileUnit(const DICompileUnit *DIUnit) {
> > +  if (auto *CU = CUMap.lookup(DIUnit))
> > +    return *CU;
> >   StringRef FN = DIUnit->getFilename();
> >   CompilationDir = DIUnit->getDirectory();
> >
> > @@ -540,7 +542,12 @@ void DwarfDebug::beginModule() {
> >   }
> >
> >   for (DICompileUnit *CUNode : M->debug_compile_units()) {
> > -    DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode);
> > +    if (CUNode->getEnumTypes().empty() &&
> CUNode->getRetainedTypes().empty() &&
> > +        CUNode->getGlobalVariables().empty() &&
> > +        CUNode->getImportedEntities().empty() &&
> CUNode->getMacros().empty())
> > +      continue;
> > +
> > +    DwarfCompileUnit &CU = getOrCreateDwarfCompileUnit(CUNode);
> >     for (auto *IE : CUNode->getImportedEntities())
> >       CU.addImportedEntity(IE);
> >
> > @@ -587,11 +594,12 @@ void DwarfDebug::finishVariableDefinitio
> > }
> >
> > void DwarfDebug::finishSubprogramDefinitions() {
> > -  for (const DISubprogram *SP : ProcessedSPNodes)
> > -    if (SP->getUnit()->getEmissionKind() != DICompileUnit::NoDebug)
> > -      forBothCUs(*CUMap.lookup(SP->getUnit()), [&](DwarfCompileUnit
> &CU) {
> > -        CU.finishSubprogramDefinition(SP);
> > -      });
> > +  for (const DISubprogram *SP : ProcessedSPNodes) {
> > +    assert(SP->getUnit()->getEmissionKind() != DICompileUnit::NoDebug);
> > +    forBothCUs(
> > +        getOrCreateDwarfCompileUnit(SP->getUnit()),
> > +        [&](DwarfCompileUnit &CU) { CU.finishSubprogramDefinition(SP);
> });
> > +  }
> > }
> >
> > void DwarfDebug::finalizeModuleInfo() {
> > @@ -1136,12 +1144,10 @@ void DwarfDebug::beginFunctionImpl(const
> >
> >   auto *SP = MF->getFunction()->getSubprogram();
> >   assert(LScopes.empty() || SP ==
> LScopes.getCurrentFunctionScope()->getScopeNode());
> > -  DwarfCompileUnit *TheCU = CUMap.lookup(SP->getUnit());
> > -  if (!TheCU) {
> > -    assert(SP->getUnit()->getEmissionKind() == DICompileUnit::NoDebug &&
> > -           "DICompileUnit missing from llvm.dbg.cu?");
> > +  if (SP->getUnit()->getEmissionKind() == DICompileUnit::NoDebug)
> >     return;
> > -  }
> > +
> > +  DwarfCompileUnit &CU = getOrCreateDwarfCompileUnit(SP->getUnit());
> >
> >   // Set DwarfDwarfCompileUnitID in MCContext to the Compile Unit this
> function
> >   // belongs to so that we add to the correct per-cu line table in the
> > @@ -1150,7 +1156,7 @@ void DwarfDebug::beginFunctionImpl(const
> >     // Use a single line table if we are generating assembly.
> >     Asm->OutStreamer->getContext().setDwarfCompileUnitID(0);
> >   else
> > -
> Asm->OutStreamer->getContext().setDwarfCompileUnitID(TheCU->getUniqueID());
> > +
> Asm->OutStreamer->getContext().setDwarfCompileUnitID(CU.getUniqueID());
> >
> >   // Record beginning of function.
> >   PrologEndLoc = findPrologueEndLoc(MF);
> > @@ -1546,6 +1552,9 @@ void DwarfDebug::emitDebugLocEntryLocati
> >
> > // Emit locations into the debug loc section.
> > void DwarfDebug::emitDebugLoc() {
> > +  if (DebugLocs.getLists().empty())
> > +    return;
> > +
> >   // Start the dwarf loc section.
> >   Asm->OutStreamer->SwitchSection(
> >       Asm->getObjFileLowering().getDwarfLocSection());
> > @@ -1757,6 +1766,9 @@ void DwarfDebug::emitDebugARanges() {
> >
> > /// Emit address ranges into a debug ranges section.
> > void DwarfDebug::emitDebugRanges() {
> > +  if (CUMap.empty())
> > +    return;
> > +
> >   // Start the dwarf ranges section.
> >   Asm->OutStreamer->SwitchSection(
> >       Asm->getObjFileLowering().getDwarfRangesSection());
> > @@ -1836,6 +1848,9 @@ void DwarfDebug::emitMacroFile(DIMacroFi
> >
> > /// Emit macros into a debug macinfo section.
> > void DwarfDebug::emitDebugMacinfo() {
> > +  if (CUMap.empty())
> > +    return;
> > +
> >   // Start the dwarf macinfo section.
> >   Asm->OutStreamer->SwitchSection(
> >       Asm->getObjFileLowering().getDwarfMacinfoSection());
> >
> > Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)
> > +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Fri May 26 13:52:56
> 2017
> > @@ -416,7 +416,7 @@ class DwarfDebug : public DebugHandlerBa
> >
> >   /// Create new DwarfCompileUnit for the given metadata node with tag
> >   /// DW_TAG_compile_unit.
> > -  DwarfCompileUnit &constructDwarfCompileUnit(const DICompileUnit
> *DIUnit);
> > +  DwarfCompileUnit &getOrCreateDwarfCompileUnit(const DICompileUnit
> *DIUnit);
> >
> >   /// Construct imported_module or imported_declaration DIE.
> >   void constructAndAddImportedEntityDIE(DwarfCompileUnit &TheCU,
> >
> > Modified: llvm/trunk/test/DebugInfo/Generic/empty.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/empty.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/Generic/empty.ll (original)
> > +++ llvm/trunk/test/DebugInfo/Generic/empty.ll Fri May 26 13:52:56 2017
> > @@ -15,9 +15,6 @@
> > ; CHECK: .debug_pubnames contents:
> > ; CHECK-NOT: {{^}}0x
> >
> > -; CHECK: .debug_pubtypes contents:
> > -; CHECK-NOT: {{^}}0x
> > -
> > ; CHECK: contents:
> >
> > ; Don't emit DW_AT_addr_base when there are no addresses.
> > @@ -26,8 +23,10 @@
> > !llvm.dbg.cu = !{!0}
> > !llvm.module.flags = !{!5}
> >
> > -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang
> version 3.1 (trunk 143523)", isOptimized: true, emissionKind: FullDebug,
> file: !4, enums: !2, retainedTypes: !2, globals: !2)
> > +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang
> version 3.1 (trunk 143523)", isOptimized: true, emissionKind: FullDebug,
> file: !4, enums: !2, retainedTypes: !6, globals: !2)
> > !2 = !{}
> > !3 = !DIFile(filename: "empty.c", directory: "/home/nlewycky")
> > !4 = !DIFile(filename: "empty.c", directory: "/home/nlewycky")
> > !5 = !{i32 1, !"Debug Info Version", i32 3}
> > +!6 = !{!7}
> > +!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> >
> > Modified: llvm/trunk/test/DebugInfo/Generic/nodebug.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/nodebug.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/Generic/nodebug.ll (original)
> > +++ llvm/trunk/test/DebugInfo/Generic/nodebug.ll Fri May 26 13:52:56 2017
> > @@ -42,7 +42,7 @@ attributes #0 = { uwtable "less-precise-
> > !llvm.module.flags = !{!8, !9}
> > !llvm.ident = !{!10}
> >
> > -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer:
> "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file:
> !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
> > +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer:
> "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file:
> !1, enums: !2, retainedTypes: !12, globals: !2, imports: !2)
> > !1 = !DIFile(filename: "nodebug.cpp", directory: "/tmp/dbginfo")
> > !2 = !{}
> > !4 = distinct !DISubprogram(name: "f1", linkageName: "_Z2f1v", line: 2,
> isLocal: false, isDefinition: true, virtualIndex: 6, flags:
> DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 2, file: !1,
> scope: !5, type: !6, variables: !2)
> > @@ -53,3 +53,5 @@ attributes #0 = { uwtable "less-precise-
> > !9 = !{i32 2, !"Debug Info Version", i32 3}
> > !10 = !{!"clang version 3.5.0 "}
> > !11 = !DILocation(line: 3, scope: !4)
> > +!12 = !{!13}
> > +!13 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> >
> > Modified: llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll (original)
> > +++ llvm/trunk/test/DebugInfo/Generic/skeletoncu.ll Fri May 26 13:52:56
> 2017
> > @@ -7,9 +7,11 @@
> > !llvm.dbg.cu = !{!0}
> > !llvm.module.flags = !{!3, !4}
> >
> > -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer:
> "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename:
> "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals:
> !2, imports: !2, dwoId: 43981)
> > +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer:
> "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename:
> "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !5, globals:
> !2, imports: !2, dwoId: 43981)
> > !1 = !DIFile(filename: "<stdin>", directory: "/")
> > !2 = !{}
> > !3 = !{i32 2, !"Dwarf Version", i32 4}
> > !4 = !{i32 2, !"Debug Info Version", i32 3}
> > +!5 = !{!6}
> > +!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> >
> >
> > Modified: llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll (original)
> > +++ llvm/trunk/test/DebugInfo/X86/debug-loc-offset.ll Fri May 26
> 13:52:56 2017
> > @@ -35,10 +35,6 @@
> > ; CHECK: DW_AT_low_pc
> > ; CHECK: DW_AT_high_pc
> >
> > -; CHECK: DW_TAG_compile_unit
> > -; CHECK: DW_AT_low_pc
> > -; CHECK: DW_AT_high_pc
> > -
> > ; CHECK: DW_TAG_subprogram
> > ; CHECK-NOT: DW_TAG
> > ; CHECK: DW_AT_linkage_name [DW_FORM_strp]{{.*}}"_Z3baz1A"
> > @@ -53,6 +49,10 @@
> > ; CHECK: DW_AT_location [DW_FORM_exprloc]
> > ; CHECK-NOT: DW_AT_location
> >
> > +; CHECK: DW_TAG_compile_unit
> > +; CHECK: DW_AT_low_pc
> > +; CHECK: DW_AT_high_pc
> > +
> > ; CHECK: .debug_loc contents:
> > ; CHECK: 0x00000000: Beginning address offset: 0x0000000000000000
> > ; CHECK:                Ending address offset: 0x0000000000000017
> >
> > Modified: llvm/trunk/test/DebugInfo/X86/debug-macro.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/debug-macro.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/X86/debug-macro.ll (original)
> > +++ llvm/trunk/test/DebugInfo/X86/debug-macro.ll Fri May 26 13:52:56 2017
> > @@ -1,40 +1,38 @@
> > -; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump
> -debug-dump=info - | FileCheck --check-prefix=CHECK-INFO %s
> > -; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump
> -debug-dump=macro - | FileCheck --check-prefix=CHECK-MACRO %s
> > -; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump
> -debug-dump=line - | FileCheck --check-prefix=CHECK-LINE %s
> > -
> > -
> > -; CHECK-INFO: .debug_info contents:
> > -; CHECK-INFO: DW_TAG_compile_unit
> > -; CHECK-INFO-NOT: DW_TAG
> > -; CHECK-INFO:   DW_AT_name {{.*}}"debug-macro.cpp")
> > -; CHECK-INFO:   DW_AT_macro_info {{.*}}(0x00000000)
> > -; CHECK-INFO: DW_TAG_compile_unit
> > -; CHECK-INFO-NOT: DW_TAG
> > -; CHECK-INFO:   DW_AT_name {{.*}}"debug-macro1.cpp")
> > -; CHECK-INFO:   DW_AT_macro_info {{.*}}(0x00000044)
> > -; CHECK-INFO: DW_TAG_compile_unit
> > -; CHECK-INFO-NOT: DW_TAG
> > -; CHECK-INFO:   DW_AT_name {{.*}}"debug-macro2.cpp")
> > -; CHECK-INFO-NOT: DW_AT_macro_info
> > -
> > -; CHECK-MACRO:     .debug_macinfo contents:
> > -; CHECK-MACRO-NEXT: DW_MACINFO_define - lineno: 0 macro: NameCMD
> ValueCMD
> > -; CHECK-MACRO-NEXT: DW_MACINFO_start_file - lineno: 0 filenum: 1
> > -; CHECK-MACRO-NEXT:   DW_MACINFO_start_file - lineno: 9 filenum: 2
> > -; CHECK-MACRO-NEXT:     DW_MACINFO_define - lineno: 1 macro: NameDef
> Value
> > -; CHECK-MACRO-NEXT:     DW_MACINFO_undef - lineno: 11 macro: NameUndef
> > -; CHECK-MACRO-NEXT:   DW_MACINFO_end_file
> > -; CHECK-MACRO-NEXT:   DW_MACINFO_undef - lineno: 10 macro: NameUndef2
> > -; CHECK-MACRO-NEXT: DW_MACINFO_end_file
> > -; CHECK-MACRO-NEXT: DW_MACINFO_start_file - lineno: 0 filenum: 1
> > -; CHECK-MACRO-NEXT: DW_MACINFO_end_file
> > -
> > -; CHECK-LINE: .debug_line contents:
> > -; CHECK-LINE: Dir  Mod Time   File Len   File Name
> > -; CHECK-LINE: file_names[  1] {{.*}}debug-macro.cpp
> > -; CHECK-LINE: file_names[  2] {{.*}}debug-macro.h
> > -; CHECK-LINE: Dir  Mod Time   File Len   File Name
> > -; CHECK-LINE: file_names[  1] {{.*}}debug-macro1.cpp
> > +; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump - | FileCheck
> %s
> > +
> > +
> > +; CHECK-LABEL: .debug_info contents:
> > +; CHECK: DW_TAG_compile_unit
> > +; CHECK-NOT: DW_TAG
> > +; CHECK:   DW_AT_name {{.*}}"debug-macro.cpp")
> > +; CHECK:   DW_AT_macro_info {{.*}}(0x00000000)
> > +; CHECK: DW_TAG_compile_unit
> > +; CHECK-NOT: DW_TAG
> > +; CHECK:   DW_AT_name {{.*}}"debug-macro1.cpp")
> > +; CHECK:   DW_AT_macro_info {{.*}}(0x00000044)
> > +; CHECK: DW_TAG_compile_unit
> > +; CHECK-NOT: DW_TAG
> > +; CHECK:   DW_AT_name {{.*}}"debug-macro2.cpp")
> > +; CHECK-NOT: DW_AT_macro_info
> > +
> > +; CHECK-LABEL:     .debug_macinfo contents:
> > +; CHECK-NEXT: DW_MACINFO_define - lineno: 0 macro: NameCMD ValueCMD
> > +; CHECK-NEXT: DW_MACINFO_start_file - lineno: 0 filenum: 1
> > +; CHECK-NEXT:   DW_MACINFO_start_file - lineno: 9 filenum: 2
> > +; CHECK-NEXT:     DW_MACINFO_define - lineno: 1 macro: NameDef Value
> > +; CHECK-NEXT:     DW_MACINFO_undef - lineno: 11 macro: NameUndef
> > +; CHECK-NEXT:   DW_MACINFO_end_file
> > +; CHECK-NEXT:   DW_MACINFO_undef - lineno: 10 macro: NameUndef2
> > +; CHECK-NEXT: DW_MACINFO_end_file
> > +; CHECK-NEXT: DW_MACINFO_start_file - lineno: 0 filenum: 1
> > +; CHECK-NEXT: DW_MACINFO_end_file
> > +
> > +; CHECK-LABEL: .debug_line contents:
> > +; CHECK: Dir  Mod Time   File Len   File Name
> > +; CHECK: file_names[  1] {{.*}}debug-macro.cpp
> > +; CHECK: file_names[  2] {{.*}}debug-macro.h
> > +; CHECK: Dir  Mod Time   File Len   File Name
> > +; CHECK: file_names[  1] {{.*}}debug-macro1.cpp
> >
> > !llvm.dbg.cu = !{!0, !16, !20}
> > !llvm.module.flags = !{!13, !14}
> > @@ -58,10 +56,14 @@
> > !14 = !{i32 1, !"Debug Info Version", i32 3}
> > !15 = !{!"clang version 3.5.0 "}
> >
> > -!16 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer:
> "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file:
> !17, enums: !2, retainedTypes: !2, globals: !2, imports: !2, macros: !18)
> > +!16 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer:
> "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file:
> !17, enums: !2, retainedTypes: !22, globals: !2, imports: !2, macros: !18)
> > !17 = !DIFile(filename: "debug-macro1.cpp", directory: "/")
> > !18 = !{!19}
> > !19 = !DIMacroFile(line: 0, file: !17, nodes: !2)
> >
> > -!20 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer:
> "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file:
> !21, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
> > +!20 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer:
> "clang version 3.5.0 ", isOptimized: false, emissionKind: FullDebug, file:
> !21, enums: !2, retainedTypes: !24, globals: !2, imports: !2)
> > !21 = !DIFile(filename: "debug-macro2.cpp", directory: "/")
> > +!22 = !{!23}
> > +!23 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> > +!24 = !{!25}
> > +!25 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float)
> >
> > Modified: llvm/trunk/test/DebugInfo/X86/empty.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/empty.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/X86/empty.ll (original)
> > +++ llvm/trunk/test/DebugInfo/X86/empty.ll Fri May 26 13:52:56 2017
> > @@ -12,20 +12,16 @@
> > ; CHECK-NEXT: Offset
> > ; CHECK-NEXT: {{^$}}
> >
> > -; CHECK: .debug_pubtypes contents:
> > -; CHECK-NEXT: length = 0x0000000e
> > -; CHECK-NEXT: Offset
> > -; CHECK-NEXT: {{^$}}
> > -
> > -
> > ; Don't emit DW_AT_addr_base when there are no addresses.
> > ; FISSION-NOT: DW_AT_GNU_addr_base [DW_FORM_sec_offset]
> >
> > !llvm.dbg.cu = !{!0}
> > !llvm.module.flags = !{!5}
> >
> > -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang
> version 3.1 (trunk 143523)", isOptimized: true, emissionKind: FullDebug,
> file: !4, enums: !2, retainedTypes: !2, globals: !2)
> > +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang
> version 3.1 (trunk 143523)", isOptimized: true, emissionKind: FullDebug,
> file: !4, enums: !2, retainedTypes: !6, globals: !2)
> > !2 = !{}
> > !3 = !DIFile(filename: "empty.c", directory: "/home/nlewycky")
> > !4 = !DIFile(filename: "empty.c", directory: "/home/nlewycky")
> > !5 = !{i32 1, !"Debug Info Version", i32 3}
> > +!6 = !{!7}
> > +!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> >
> > Modified: llvm/trunk/test/DebugInfo/X86/fission-hash.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/fission-hash.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/X86/fission-hash.ll (original)
> > +++ llvm/trunk/test/DebugInfo/X86/fission-hash.ll Fri May 26 13:52:56
> 2017
> > @@ -1,16 +1,18 @@
> > ; RUN: llc -split-dwarf-file=foo.dwo -O0 %s
> -mtriple=x86_64-unknown-linux-gnu -filetype=obj -o %t
> > ; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck %s
> >
> > -; The source is an empty file.
> > +; The source is an empty file, modified to include/retain an 'int'
> type, since empty CUs are omitted.
> >
> > -; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x0c1e629c9e5ada4f)
> > -; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x0c1e629c9e5ada4f)
> > +; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x50d985146a74bb00)
> > +; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x50d985146a74bb00)
> >
> > !llvm.dbg.cu = !{!0}
> > !llvm.module.flags = !{!3, !4}
> >
> > -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang
> version 3.4 (trunk 188230) (llvm/trunk 188234)", isOptimized: false,
> splitDebugFilename: "foo.dwo", emissionKind: FullDebug, file: !1, enums:
> !2, retainedTypes: !2, globals: !2, imports: !2)
> > +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang
> version 3.4 (trunk 188230) (llvm/trunk 188234)", isOptimized: false,
> splitDebugFilename: "foo.dwo", emissionKind: FullDebug, file: !1, enums:
> !2, retainedTypes: !5, globals: !2, imports: !2)
> > !1 = !DIFile(filename: "foo.c", directory:
> "/usr/local/google/home/echristo/tmp")
> > !2 = !{}
> > !3 = !{i32 2, !"Dwarf Version", i32 3}
> > !4 = !{i32 1, !"Debug Info Version", i32 3}
> > +!5 = !{!6}
> > +!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> >
> > Modified: llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll (original)
> > +++ llvm/trunk/test/DebugInfo/X86/gnu-public-names-empty.ll Fri May 26
> 13:52:56 2017
> > @@ -17,8 +17,10 @@
> > !llvm.dbg.cu = !{!0}
> > !llvm.module.flags = !{!3, !4}
> >
> > -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang
> version 3.4 (trunk 191846) (llvm/trunk 191866)", isOptimized: false,
> emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals:
> !2, imports: !2)
> > +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang
> version 3.4 (trunk 191846) (llvm/trunk 191866)", isOptimized: false,
> emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !5, globals:
> !2, imports: !2)
> > !1 = !DIFile(filename: "foo.c", directory:
> "/usr/local/google/home/echristo/tmp")
> > !2 = !{}
> > !3 = !{i32 2, !"Dwarf Version", i32 4}
> > !4 = !{i32 1, !"Debug Info Version", i32 3}
> > +!5 = !{!6}
> > +!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> >
> > Modified: llvm/trunk/test/DebugInfo/dwo.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/dwo.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/dwo.ll (original)
> > +++ llvm/trunk/test/DebugInfo/dwo.ll Fri May 26 13:52:56 2017
> > @@ -8,8 +8,10 @@
> > !llvm.dbg.cu = !{!0}
> > !llvm.module.flags = !{!3, !4}
> >
> > -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer:
> "LLVM", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug,
> enums: !2, retainedTypes: !2, globals: !2, imports: !2, dwoId: 43981)
> > +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer:
> "LLVM", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug,
> enums: !2, retainedTypes: !5, globals: !2, imports: !2, dwoId: 43981)
> > !1 = !DIFile(filename: "<stdin>", directory: "/")
> > !2 = !{}
> > !3 = !{i32 2, !"Dwarf Version", i32 4}
> > !4 = !{i32 2, !"Debug Info Version", i32 3}
> > +!5 = !{!6}
> > +!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> >
> > Copied: llvm/trunk/test/DebugInfo/omit-empty.ll (from r304018,
> llvm/trunk/test/DebugInfo/dwo.ll)
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/omit-empty.ll?p2=llvm/trunk/test/DebugInfo/omit-empty.ll&p1=llvm/trunk/test/DebugInfo/dwo.ll&r1=304018&r2=304020&rev=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/dwo.ll (original)
> > +++ llvm/trunk/test/DebugInfo/omit-empty.ll Fri May 26 13:52:56 2017
> > @@ -1,14 +1,11 @@
> > -; RUN: %llc_dwarf %s -filetype=obj -o %t
> > -; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s
> > -; CHECK: DW_TAG_compile_unit
> > -; CHECK: DW_AT_GNU_dwo_id {{.*}}abcd
> > -; CHECK-NOT: DW_AT_GNU_dwo_name
> > -; REQUIRES: default_triple
> > +; RUN: %llc_dwarf %s -filetype=obj -o - | llvm-objdump -h - | FileCheck
> %s
> > +
> > +; CHECK-NOT: .debug_
> >
> > !llvm.dbg.cu = !{!0}
> > !llvm.module.flags = !{!3, !4}
> >
> > -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer:
> "LLVM", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug,
> enums: !2, retainedTypes: !2, globals: !2, imports: !2, dwoId: 43981)
> > +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer:
> "LLVM", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug,
> enums: !2, retainedTypes: !2, globals: !2, imports: !2)
> > !1 = !DIFile(filename: "<stdin>", directory: "/")
> > !2 = !{}
> > !3 = !{i32 2, !"Dwarf Version", i32 4}
> >
> > Modified: llvm/trunk/test/DebugInfo/skeletoncu.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/skeletoncu.ll?rev=304020&r1=304019&r2=304020&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/test/DebugInfo/skeletoncu.ll (original)
> > +++ llvm/trunk/test/DebugInfo/skeletoncu.ll Fri May 26 13:52:56 2017
> > @@ -8,9 +8,11 @@
> > !llvm.dbg.cu = !{!0}
> > !llvm.module.flags = !{!3, !4}
> >
> > -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer:
> "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename:
> "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals:
> !2, imports: !2, dwoId: 43981)
> > +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer:
> "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename:
> "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !6, globals:
> !2, imports: !2, dwoId: 43981)
> > !1 = !DIFile(filename: "<stdin>", directory: "/")
> > !2 = !{}
> > !3 = !{i32 2, !"Dwarf Version", i32 4}
> > !4 = !{i32 2, !"Debug Info Version", i32 3}
> > +!5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
> > +!6 = !{!5}
> >
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170526/3648fb3b/attachment.html>


More information about the llvm-commits mailing list