r261301 - Fix SemaTemplate/instantiate-field.cpp after r261297.

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 18 18:51:07 PST 2016


Author: nico
Date: Thu Feb 18 20:51:07 2016
New Revision: 261301

URL: http://llvm.org/viewvc/llvm-project?rev=261301&view=rev
Log:
Fix SemaTemplate/instantiate-field.cpp after r261297.

For templates, fields can have incomplete types:

  template <class T>
  struct A2 {
    struct B;
    B b;
  };

Don't try to touch the DefinitionData of those fields.

Modified:
    cfe/trunk/lib/AST/DeclCXX.cpp

Modified: cfe/trunk/lib/AST/DeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclCXX.cpp?rev=261301&r1=261300&r2=261301&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclCXX.cpp (original)
+++ cfe/trunk/lib/AST/DeclCXX.cpp Thu Feb 18 20:51:07 2016
@@ -704,7 +704,7 @@ void CXXRecordDecl::addedMember(Decl *D)
 
     if (!Field->hasInClassInitializer() && !Field->isMutable()) {
       if (CXXRecordDecl *FieldType = Field->getType()->getAsCXXRecordDecl()) {
-        if (!FieldType->allowConstDefaultInit())
+        if (FieldType->hasDefinition() && !FieldType->allowConstDefaultInit())
           data().HasUninitializedFields = true;
       } else {
         data().HasUninitializedFields = true;




More information about the cfe-commits mailing list