Merged to 6.0 in r322557.
On Wed, Jan 3, 2018 at 8:10 PM, Adrian Prantl via cfe-commits <cfe-commits@lists.llvm.org> wrote: > Author: adrian > Date: Wed Jan 3 11:10:21 2018 > New Revision: 321754 > > URL: http://llvm.org/viewvc/llvm-project?rev=321754&view=rev > Log: > -gmodules: Emit debug info for implicit module imports via #include. > > When a type is only used as a template parameter and that type is the > only type imported from another #include'd module, no skeleton CU for > that module is generated, so a consumer doesn't know where to find the > type definition. By emitting an import declaration, we can force a > skeleton CU to be generated for each imported module. > > rdar://problem/36266156 > > Modified: > cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp > cfe/trunk/test/Modules/ExtDebugInfo.cpp > cfe/trunk/test/Modules/Inputs/DebugCXX.h > cfe/trunk/test/Modules/ModuleDebugInfo.cpp > > Modified: cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp?rev=321754&r1=321753&r2=321754&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp (original) > +++ cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp Wed Jan 3 > 11:10:21 2018 > @@ -228,6 +228,11 @@ public: > Builder->getModuleDebugInfo()->completeRequiredType(RD); > } > > + void HandleImplicitImportDecl(ImportDecl *D) override { > + if (!D->getImportedOwningModule()) > + Builder->getModuleDebugInfo()->EmitImportDecl(*D); > + } > + > /// Emit a container holding the serialized AST. > void HandleTranslationUnit(ASTContext &Ctx) override { > assert(M && VMContext && Builder); > > Modified: cfe/trunk/test/Modules/ExtDebugInfo.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ExtDebugInfo.cpp?rev=321754&r1=321753&r2=321754&view=diff > ============================================================================== > --- cfe/trunk/test/Modules/ExtDebugInfo.cpp (original) > +++ cfe/trunk/test/Modules/ExtDebugInfo.cpp Wed Jan 3 11:10:21 2018 > @@ -187,7 +187,7 @@ void foo() { > > // CHECK: !DIGlobalVariable(name: "anon_enum", {{.*}}, type: > ![[ANON_ENUM:[0-9]+]] > // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, scope: ![[NS]], > -// CHECK-SAME: line: 16 > +// CHECK-SAME: line: 19 > > // CHECK: !DIGlobalVariable(name: "GlobalUnion", > // CHECK-SAME: type: ![[GLOBAL_UNION:[0-9]+]] > > Modified: cfe/trunk/test/Modules/Inputs/DebugCXX.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/DebugCXX.h?rev=321754&r1=321753&r2=321754&view=diff > ============================================================================== > --- cfe/trunk/test/Modules/Inputs/DebugCXX.h (original) > +++ cfe/trunk/test/Modules/Inputs/DebugCXX.h Wed Jan 3 11:10:21 2018 > @@ -1,4 +1,7 @@ > /* -*- C++ -*- */ > + > +#include "dummy.h" > + > namespace DebugCXX { > // Records. > struct Struct { > > Modified: cfe/trunk/test/Modules/ModuleDebugInfo.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ModuleDebugInfo.cpp?rev=321754&r1=321753&r2=321754&view=diff > ============================================================================== > --- cfe/trunk/test/Modules/ModuleDebugInfo.cpp (original) > +++ cfe/trunk/test/Modules/ModuleDebugInfo.cpp Wed Jan 3 11:10:21 2018 > @@ -5,12 +5,13 @@ > > // Modules: > // RUN: rm -rf %t > -// RUN: %clang_cc1 -triple %itanium_abi_triple -x objective-c++ -std=c++11 > -debug-info-kind=limited -fmodules -fmodule-format=obj -fimplicit-module-maps > -DMODULES -fmodules-cache-path=%t %s -I %S/Inputs -I %t -emit-llvm -o %t.ll > -mllvm -debug-only=pchcontainer &>%t-mod.ll > +// RUN: %clang_cc1 -triple %itanium_abi_triple -x objective-c++ -std=c++11 > -debugger-tuning=lldb -debug-info-kind=limited -fmodules -fmodule-format=obj > -fimplicit-module-maps -DMODULES -fmodules-cache-path=%t %s -I %S/Inputs -I > %t -emit-llvm -o %t.ll -mllvm -debug-only=pchcontainer &>%t-mod.ll > // RUN: cat %t-mod.ll | FileCheck %s > // RUN: cat %t-mod.ll | FileCheck --check-prefix=CHECK-NEG %s > +// RUN: cat %t-mod.ll | FileCheck --check-prefix=CHECK-MOD %s > > // PCH: > -// RUN: %clang_cc1 -triple %itanium_abi_triple -x c++ -std=c++11 -emit-pch > -fmodule-format=obj -I %S/Inputs -o %t.pch %S/Inputs/DebugCXX.h -mllvm > -debug-only=pchcontainer &>%t-pch.ll > +// RUN: %clang_cc1 -triple %itanium_abi_triple -x c++ -std=c++11 > -debugger-tuning=lldb -emit-pch -fmodule-format=obj -I %S/Inputs -o %t.pch > %S/Inputs/DebugCXX.h -mllvm -debug-only=pchcontainer &>%t-pch.ll > // RUN: cat %t-pch.ll | FileCheck %s > // RUN: cat %t-pch.ll | FileCheck --check-prefix=CHECK-NEG %s > > @@ -18,6 +19,9 @@ > @import DebugCXX; > #endif > > +// CHECK-MOD: distinct !DICompileUnit(language: DW_LANG_{{.*}}C_plus_plus, > +// CHECK-MOD: distinct !DICompileUnit(language: DW_LANG_{{.*}}C_plus_plus, > + > // CHECK: distinct !DICompileUnit(language: DW_LANG_{{.*}}C_plus_plus, > // CHECK-SAME: isOptimized: false, > // CHECK-NOT: splitDebugFilename: > @@ -27,6 +31,8 @@ > // CHECK-SAME: identifier: "_ZTSN8DebugCXX4EnumE") > // CHECK: !DINamespace(name: "DebugCXX" > > +// CHECK-MOD: ![[DEBUGCXX:.*]] = !DIModule(scope: null, name: "DebugCXX > + > // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, > // CHECK-NOT: name: > // CHECK-SAME: ) > @@ -150,4 +156,11 @@ > // CHECK-SAME: name: > "WithSpecializedBase<float>", > // CHECK-SAME: flags: DIFlagFwdDecl, > > +// CHECK-MOD: !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: > ![[DEBUGCXX]], > +// CHECK-MOD-SAME: entity: ![[DUMMY:[0-9]+]], > +// CHECK-MOD-SAME: line: 3) > +// CHECK-MOD: ![[DUMMY]] = !DIModule(scope: null, name: "dummy", > +// CHECK-MOD: distinct !DICompileUnit(language: DW_LANG_ObjC_plus_plus, > +// CHECK-MOD-SAME: splitDebugFilename: "{{.*}}dummy{{.*}}.pcm", > + > // CHECK-NEG-NOT: !DICompositeType(tag: DW_TAG_structure_type, name: > "PureForwardDecl" > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits