diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/Type.cpp | 5 | ||||
-rw-r--r-- | clang/lib/Frontend/PrintParserCallbacks.cpp | 1 | ||||
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 1 | ||||
-rw-r--r-- | clang/lib/Sema/Sema.h | 13 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaTemplate.cpp | 4 |
6 files changed, 14 insertions, 12 deletions
diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 4d57680da2b..1df8b63e2e3 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -65,8 +65,9 @@ void DependentSizedArrayType::Destroy(ASTContext& C) { } void DependentSizedExtVectorType::Destroy(ASTContext& C) { - if (SizeExpr) - SizeExpr->Destroy(C); + // FIXME: Deallocate size expression, once we're cloning properly. +// if (SizeExpr) +// SizeExpr->Destroy(C); this->~DependentSizedExtVectorType(); C.Deallocate(this); } diff --git a/clang/lib/Frontend/PrintParserCallbacks.cpp b/clang/lib/Frontend/PrintParserCallbacks.cpp index 170ab5e33f5..51693cc00df 100644 --- a/clang/lib/Frontend/PrintParserCallbacks.cpp +++ b/clang/lib/Frontend/PrintParserCallbacks.cpp @@ -197,6 +197,7 @@ namespace { SourceLocation KWLoc, const CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, AttributeList *Attr, AccessSpecifier AS, + MultiTemplateParamsArg TemplateParamLists, bool &Owned) { // TagType is an instance of DeclSpec::TST, indicating what kind of tag this // is (struct/union/enum/class). diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index 75831ccbba2..9d13e98560d 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -1587,6 +1587,7 @@ void Parser::ParseEnumSpecifier(SourceLocation StartLoc, DeclSpec &DS, bool Owned = false; DeclPtrTy TagDecl = Actions.ActOnTag(CurScope, DeclSpec::TST_enum, TK, StartLoc, SS, Name, NameLoc, Attr, AS, + Action::MultiTemplateParamsArg(Actions), Owned); if (Tok.is(tok::l_brace)) diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h index 9f3eff9f1db..d66e642af3a 100644 --- a/clang/lib/Sema/Sema.h +++ b/clang/lib/Sema/Sema.h @@ -2084,13 +2084,12 @@ public: TemplateParameterList **ParamLists, unsigned NumParamLists); - virtual DeclResult - ActOnClassTemplate(Scope *S, unsigned TagSpec, TagKind TK, - SourceLocation KWLoc, const CXXScopeSpec &SS, - IdentifierInfo *Name, SourceLocation NameLoc, - AttributeList *Attr, - MultiTemplateParamsArg TemplateParameterLists, - AccessSpecifier AS); + DeclResult CheckClassTemplate(Scope *S, unsigned TagSpec, TagKind TK, + SourceLocation KWLoc, const CXXScopeSpec &SS, + IdentifierInfo *Name, SourceLocation NameLoc, + AttributeList *Attr, + MultiTemplateParamsArg TemplateParameterLists, + AccessSpecifier AS); QualType CheckTemplateIdType(TemplateName Template, SourceLocation TemplateLoc, diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 760a95f9d03..e38047cf4b6 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3665,7 +3665,7 @@ Sema::DeclPtrTy Sema::ActOnTag(Scope *S, unsigned TagSpec, TagKind TK, // This is a declaration or definition of a class template (which may // be a member of another template). OwnedDecl = false; - DeclResult Result = ActOnClassTemplate(S, TagSpec, TK, KWLoc, + DeclResult Result = CheckClassTemplate(S, TagSpec, TK, KWLoc, SS, Name, NameLoc, Attr, move(TemplateParameterLists), AS); diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 981b8508c56..9ab6164c484 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -409,7 +409,7 @@ Sema::ActOnTemplateParameterList(unsigned Depth, } Sema::DeclResult -Sema::ActOnClassTemplate(Scope *S, unsigned TagSpec, TagKind TK, +Sema::CheckClassTemplate(Scope *S, unsigned TagSpec, TagKind TK, SourceLocation KWLoc, const CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, AttributeList *Attr, @@ -2491,7 +2491,7 @@ Sema::ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec, TagKind TK, << (TK == TK_Definition) << CodeModificationHint::CreateRemoval(SourceRange(LAngleLoc, RAngleLoc)); - return ActOnClassTemplate(S, TagSpec, TK, KWLoc, SS, + return CheckClassTemplate(S, TagSpec, TK, KWLoc, SS, ClassTemplate->getIdentifier(), TemplateNameLoc, Attr, |