r248184 - Debug Info: When building a module, emit skeleton CUs for imported modules.
David Blaikie via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 21 10:59:37 PDT 2015
On Mon, Sep 21, 2015 at 10:48 AM, Adrian Prantl via cfe-commits <
cfe-commits at 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
> +
> + at 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 at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150921/bd31debe/attachment.html>
More information about the cfe-commits
mailing list