martong created this revision. martong added reviewers: shafik, a_sidorin. Herald added subscribers: cfe-commits, gamesh411, Szelethus, dkrupp, rnkovacs. Herald added a reviewer: a.sidorin.
During the addition of an injected class type to a record it may happen that a CXXRecordDecl in the redecl chain does not have a described template set and this caused an assert in LLDB. Repository: rC Clang https://reviews.llvm.org/D56581 Files: lib/AST/ASTImporter.cpp Index: lib/AST/ASTImporter.cpp =================================================================== --- lib/AST/ASTImporter.cpp +++ lib/AST/ASTImporter.cpp @@ -2734,6 +2734,9 @@ getCanonicalForwardRedeclChain(D2CXX); for (auto *R : Redecls) { auto *RI = cast<CXXRecordDecl>(R); + // Existing Decl in the chain might not have the described + // template set, so we set it now. + RI->setDescribedClassTemplate(ToDescribed); RI->setTypeForDecl(nullptr); // Below we create a new injected type and assign that to the // canonical decl, subsequent declarations in the chain will reuse
Index: lib/AST/ASTImporter.cpp =================================================================== --- lib/AST/ASTImporter.cpp +++ lib/AST/ASTImporter.cpp @@ -2734,6 +2734,9 @@ getCanonicalForwardRedeclChain(D2CXX); for (auto *R : Redecls) { auto *RI = cast<CXXRecordDecl>(R); + // Existing Decl in the chain might not have the described + // template set, so we set it now. + RI->setDescribedClassTemplate(ToDescribed); RI->setTypeForDecl(nullptr); // Below we create a new injected type and assign that to the // canonical decl, subsequent declarations in the chain will reuse
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits