On Mon, Sep 21, 2015 at 10:48 AM, Adrian Prantl via cfe-commits < cfe-commits@lists.llvm.org> wrote:
> Author: adrian > Date: Mon Sep 21 12:48:37 2015 > New Revision: 248184 > > URL: http://llvm.org/viewvc/llvm-project?rev=248184&view=rev > Log: > Debug Info: When building a module, emit skeleton CUs for imported modules. > This seems like it might add a reasonable amount more debug info - is it necessary? Or could the debugger use the list of modules from the referencing/original compilation unit as the dependency set to search? > > Added: > cfe/trunk/test/Modules/DebugInfoTransitiveImport.m > Modified: > cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp > > Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=248184&r1=248183&r2=248184&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Mon Sep 21 12:48:37 2015 > @@ -2161,7 +2161,14 @@ ObjCInterfaceDecl *CGDebugInfo::getObjCI > > llvm::DIModule *CGDebugInfo::getParentModuleOrNull(const Decl *D) { > ExternalASTSource::ASTSourceDescriptor Info; > - if (ClangModuleMap) { > + if (DebugTypeExtRefs && D->isFromASTFile()) { > + // Record a reference to an imported clang module or precompiled > header. > + auto *Reader = CGM.getContext().getExternalSource(); > + auto Idx = D->getOwningModuleID(); > + auto Info = Reader->getSourceDescriptor(Idx); > + if (Info) > + return getOrCreateModuleRef(*Info, /*SkeletonCU=*/true); > + } else if (ClangModuleMap) { > // We are building a clang module or a precompiled header. > // > // TODO: When D is a CXXRecordDecl or a C++ Enum, the ODR applies > @@ -2179,14 +2186,6 @@ llvm::DIModule *CGDebugInfo::getParentMo > } > } > > - if (DebugTypeExtRefs && D->isFromASTFile()) { > - // Record a reference to an imported clang module or precompiled > header. > - auto *Reader = CGM.getContext().getExternalSource(); > - auto Idx = D->getOwningModuleID(); > - auto Info = Reader->getSourceDescriptor(Idx); > - if (Info) > - return getOrCreateModuleRef(*Info, /*SkeletonCU=*/true); > - } > return nullptr; > } > > > Modified: cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp?rev=248184&r1=248183&r2=248184&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp (original) > +++ cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp Mon Sep 21 > 12:48:37 2015 > @@ -67,6 +67,13 @@ class PCHContainerGenerator : public AST > return !Ty->isDependentType() && !Ty->isUndeducedType(); > } > > + bool VisitImportDecl(ImportDecl *D) { > + auto *Import = cast<ImportDecl>(D); > + if (!Import->getImportedOwningModule()) > + DI.EmitImportDecl(*Import); > + return true; > + } > + > bool VisitTypeDecl(TypeDecl *D) { > QualType QualTy = Ctx.getTypeDeclType(D); > if (!QualTy.isNull() && CanRepresent(QualTy.getTypePtr())) > > Added: cfe/trunk/test/Modules/DebugInfoTransitiveImport.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/DebugInfoTransitiveImport.m?rev=248184&view=auto > > ============================================================================== > --- cfe/trunk/test/Modules/DebugInfoTransitiveImport.m (added) > +++ cfe/trunk/test/Modules/DebugInfoTransitiveImport.m Mon Sep 21 12:48:37 > 2015 > @@ -0,0 +1,15 @@ > +// RUN: rm -rf %t > +// RUN: %clang_cc1 -fmodules -fmodule-format=obj -g -dwarf-ext-refs \ > +// RUN: -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs \ > +// RUN: %s -mllvm -debug-only=pchcontainer 2>&1 | FileCheck %s > +// REQUIRES: asserts > + > +@import diamond_left; > + > +// CHECK: ![[TOP_DEF:.*]] = distinct !DICompileUnit({{.*}}diamond_top > +// CHECK: ![[LEFT_DEF:.*]] = distinct !DICompileUnit({{.*}}diamond_left > +// CHECK: !DIImportedEntity(tag: DW_TAG_imported_declaration, > +// CHECK-SAME: entity: ![[MODULE:.*]], line: 3) > +// CHECK: ![[MODULE]] = !DIModule(scope: null, name: "diamond_top" > +// CHECK: ![[TOP_SKEL_CU:.*]] = distinct > !DICompileUnit({{.*}}diamond_top{{.*}}dwoId: > + > > > _______________________________________________ > 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