On Sat, Jul 13, 2013 at 6:16 PM, David Blaikie <[email protected]> wrote: > On Sat, Jul 13, 2013 at 3:21 PM, Richard Smith <[email protected]> wrote: >> >> On Sat, Jul 13, 2013 at 2:08 PM, David Blaikie <[email protected]> wrote: >> > Author: dblaikie >> > Date: Sat Jul 13 16:08:14 2013 >> > New Revision: 186262 >> > >> > URL: http://llvm.org/viewvc/llvm-project?rev=186262&view=rev >> > Log: >> > PR16214, PR14467: DebugInfo: use "RequireCompleteType" to decide when to >> > emit the full definition of a type in -flimit-debug-info >> > >> > This simplifies the core benefit of -flimit-debug-info by taking a more >> > systematic approach to avoid emitting debug info definitions for types >> > that only require declarations. The previous ad-hoc approach (3 cases >> > removed in this patch) had many holes. >> > >> > The general approach (adding a bit to TagDecl and callback through >> > ASTConsumer) has been discussed with Richard Smith - though always open >> > to revision. >> > >> > Modified: >> > cfe/trunk/include/clang/AST/ASTConsumer.h >> > cfe/trunk/include/clang/AST/Decl.h >> > cfe/trunk/include/clang/Sema/Sema.h >> > cfe/trunk/lib/CodeGen/CGClass.cpp >> > cfe/trunk/lib/CodeGen/CGDebugInfo.cpp >> > cfe/trunk/lib/CodeGen/CGExprCXX.cpp >> > cfe/trunk/lib/CodeGen/CGExprScalar.cpp >> > cfe/trunk/lib/CodeGen/CodeGenAction.cpp >> > cfe/trunk/lib/CodeGen/ModuleBuilder.cpp >> > cfe/trunk/lib/Sema/SemaType.cpp >> > cfe/trunk/test/CodeGenCXX/debug-info-class-limited.cpp >> > >> > Modified: cfe/trunk/include/clang/AST/ASTConsumer.h >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTConsumer.h?rev=186262&r1=186261&r2=186262&view=diff >> > ============================================================================== >> > --- cfe/trunk/include/clang/AST/ASTConsumer.h (original) >> > +++ cfe/trunk/include/clang/AST/ASTConsumer.h Sat Jul 13 16:08:14 2013 >> > @@ -72,6 +72,10 @@ public: >> > /// can be defined in declspecs). >> > virtual void HandleTagDeclDefinition(TagDecl *D) {} >> > >> > + /// \brief This callback is invoked the first time each TagDecl is >> > required to >> > + /// be complete. >> > + virtual void HandleTagDeclRequiredDefinition(const TagDecl *D) {} >> > + >> > /// \brief Invoked when a function is implicitly instantiated. >> > /// Note that at this point point it does not have a body, its body is >> > /// instantiated at the end of the translation unit and passed to >> > >> > Modified: cfe/trunk/include/clang/AST/Decl.h >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=186262&r1=186261&r2=186262&view=diff >> > ============================================================================== >> > --- cfe/trunk/include/clang/AST/Decl.h (original) >> > +++ cfe/trunk/include/clang/AST/Decl.h Sat Jul 13 16:08:14 2013 >> > @@ -2445,6 +2445,9 @@ protected: >> > /// This option is only enabled when modules are enabled. >> > bool MayHaveOutOfDateDef : 1; >> > >> > + /// Has the full definition of this type been required by a use >> > somewhere in >> > + /// the TU. >> > + bool IsCompleteDefinitionRequired : 1; >> >> It looks like you're missing serialization/deserialization support for >> this flag. > > Added in r186266 - not sure if it needs separate tests, but when I got > it wrong in a few ways the tests certainly failed, so I guess it's > somewhat covered.
You could test this with a PCH test that emits and checks debug info. _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
