From: Adrian Prantl Date: Fri, 21 Jul 2017 01:24:05 +0000 (+0000) Subject: Debug Info: Don't strip clang module skeleton CUs. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c0093a7e213d19670b06401ad1dfec36880c679d;p=llvm Debug Info: Don't strip clang module skeleton CUs. This corrects a (hopefully :-) accidental side-effect of r304020. rdar://problem/33442618 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308708 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index f1b4d9f20ca..036d1080a28 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -548,7 +548,8 @@ void DwarfDebug::beginModule() { for (DICompileUnit *CUNode : M->debug_compile_units()) { if (CUNode->getEnumTypes().empty() && CUNode->getRetainedTypes().empty() && CUNode->getGlobalVariables().empty() && - CUNode->getImportedEntities().empty() && CUNode->getMacros().empty()) + CUNode->getImportedEntities().empty() && CUNode->getMacros().empty() && + !CUNode->getDWOId()) continue; DwarfCompileUnit &CU = getOrCreateDwarfCompileUnit(CUNode); diff --git a/test/DebugInfo/X86/clang-module.ll b/test/DebugInfo/X86/clang-module.ll new file mode 100644 index 00000000000..2d220368449 --- /dev/null +++ b/test/DebugInfo/X86/clang-module.ll @@ -0,0 +1,31 @@ +; RUN: llc -mtriple=x86_64-apple-darwin %s -o - -filetype=obj \ +; RUN: | llvm-dwarfdump -debug-dump=info - | FileCheck %s + +; Clang modules leave Skeleton CUs as breadcrumbs to point from the object files +; to the pcm containing the module's debug info. + +; CHECK: Compile Unit: +; CHECK: DW_TAG_compile_unit +; CHECK: DW_TAG_imported_declaration +; CHECK: Compile Unit: +; CHECK: DW_TAG_compile_unit +; CHECK: DW_AT_name {{.*}}Foo +; CHECK: DW_AT_{{.*}}dwo_id {{.*}}04d2 +; CHECK: DW_AT_{{.*}}dwo_name {{.*}}"/Foo.pcm" +source_filename = "modules.m" +target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-apple-macosx10.12.0" + +!llvm.dbg.cu = !{!0, !6} +!llvm.module.flags = !{!15, !16} +!llvm.linker.options = !{} + +!0 = distinct !DICompileUnit(language: DW_LANG_ObjC, file: !1, producer: "clang version 5.0.0 (trunk 308357) (llvm/trunk 308379)", emissionKind: FullDebug, imports: !3) +!1 = !DIFile(filename: "modules.m", directory: "/") +!3 = !{!4} +!4 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !0, entity: !5, line: 122) +!5 = !DIModule(scope: null, name: "Foo", includePath: ".", isysroot: "/") +!6 = distinct !DICompileUnit(language: DW_LANG_ObjC, file: !7, producer: "clang version 5.0.0 (trunk 308357) (llvm/trunk 308379)", isOptimized: true, runtimeVersion: 0, splitDebugFilename: "/Foo.pcm", emissionKind: FullDebug, dwoId: 1234) +!7 = !DIFile(filename: "Foo", directory: ".") +!15 = !{i32 2, !"Dwarf Version", i32 4} +!16 = !{i32 2, !"Debug Info Version", i32 3}