> On Sep 10, 2015, at 10:19 AM, David Blaikie <dblai...@gmail.com> wrote: > > > > On Thu, Sep 10, 2015 at 10:18 AM, David Blaikie <dblai...@gmail.com > <mailto:dblai...@gmail.com>> wrote: > > > On Thu, Sep 10, 2015 at 10:13 AM, Adrian Prantl via cfe-commits > <cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>> wrote: > Author: adrian > Date: Thu Sep 10 12:13:31 2015 > New Revision: 247303 > > URL: http://llvm.org/viewvc/llvm-project?rev=247303&view=rev > <http://llvm.org/viewvc/llvm-project?rev=247303&view=rev> > Log: > Debug Info: Remove an unnecessary debug type visitor. > Thanks to dblaikie for spotting this. > > Modified: > cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp > 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=247303&r1=247302&r2=247303&view=diff > > <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp?rev=247303&r1=247302&r2=247303&view=diff> > ============================================================================== > --- cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp (original) > +++ cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp Thu Sep 10 > 12:13:31 2015 > @@ -70,13 +70,6 @@ class PCHContainerGenerator : public AST > return true; > } > > - bool VisitValueDecl(ValueDecl *D) { > - QualType QualTy = D->getType(); > - if (!QualTy.isNull() && CanRepresent(QualTy.getTypePtr())) > - DI.getOrCreateStandaloneType(QualTy, D->getLocation()); > - return true; > - } > - > bool VisitObjCInterfaceDecl(ObjCInterfaceDecl *D) { > QualType QualTy(D->getTypeForDecl(), 0); > if (!QualTy.isNull() && CanRepresent(QualTy.getTypePtr())) > > Modified: cfe/trunk/test/Modules/ModuleDebugInfo.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ModuleDebugInfo.cpp?rev=247303&r1=247302&r2=247303&view=diff > > <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ModuleDebugInfo.cpp?rev=247303&r1=247302&r2=247303&view=diff> > ============================================================================== > --- cfe/trunk/test/Modules/ModuleDebugInfo.cpp (original) > +++ cfe/trunk/test/Modules/ModuleDebugInfo.cpp Thu Sep 10 12:13:31 2015 > @@ -7,10 +7,12 @@ > // RUN: rm -rf %t > // RUN: %clang_cc1 -triple %itanium_abi_triple -x objective-c++ -std=c++11 > -g -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 > > // 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: cat %t-pch.ll | FileCheck %s > +// RUN: cat %t-mod.ll | FileCheck --check-prefix=CHECK-NEG %s > > #ifdef MODULES > @import DebugCXX; > @@ -30,12 +32,11 @@ > // CHECK: !DICompositeType(tag: DW_TAG_class_type, > // CHECK-SAME: name: "Template<float, DebugCXX::traits<float> >" > // CHECK-SAME: identifier: > "_ZTSN8DebugCXX8TemplateIfNS_6traitsIfEEEE") > -// CHECK: !DICompositeType(tag: DW_TAG_class_type, > -// CHECK-SAME: name: "Template<long, DebugCXX::traits<long> >" > -// CHECK-SAME: identifier: > "_ZTSN8DebugCXX8TemplateIlNS_6traitsIlEEEE") > // CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "A<void>" > // CHECK-SAME: identifier: "_ZTSN8DebugCXX1AIJvEEE") > // CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "FloatInstatiation" > // no mangled name here yet. > // CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "B", > // no mangled name here yet. > + > +// CHECK-NEG-NOT: "_ZTSN8DebugCXX8TemplateIlNS_6traitsIlEEEE" > > Rather than using a separate check - maybe do the same sort of thing we do > for DWARF testing, CHECK-NOT between each DICompositeType, to ensure we only > get the types we intended? (including a CHECK-NOT at the end to ensure there > aren't any trailing ones) > > But also: How does the current implementation avoid emitting this type? I > thought it visited all the type decls, even those not immediately in the > module? (you mentioned that was something that you were planning to address > in a future patch) Is that not the case? Is this now sufficient to only emit > the decls immediately in this module?
It transitively emits all types that are showing up in a type declaration in the module. This type is only instantiated inside a variable declaration. > (Oh, I guess what might be missing is types referenced from /types/ in this > module - types referenced from variable decls only are addressed by this > patch, but you still don't want to include a full definition of std::vector > just because a type derives from it, has a member of it, etc) Unless there is a typedef for that instantiation of std::vector in a module I don’t see a way of avoiding this currently. -- adrian > > > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > <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