From ba4876bedf0fe5642509d673ed733b6bba39e55a Mon Sep 17 00:00:00 2001 From: dim <dim@FreeBSD.org> Date: Thu, 23 Aug 2012 18:14:59 +0000 Subject: Pull in r162360 from upstream clang trunk: Merge existing attributes before processing pragmas in friend template declarations. Fixes pr13662. This should help when building Firefox with libc++. --- contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp') diff --git a/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp b/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp index 4dbf3e4..98497cb 100644 --- a/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp +++ b/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp @@ -1104,6 +1104,9 @@ Sema::CheckClassTemplate(Scope *S, unsigned TagSpec, TagUseKind TUK, if (Attr) ProcessDeclAttributeList(S, NewClass, Attr); + if (PrevClassTemplate) + mergeDeclAttributes(NewClass, PrevClassTemplate->getTemplatedDecl()); + AddPushedVisibilityAttribute(NewClass); if (TUK != TUK_Friend) @@ -1138,8 +1141,6 @@ Sema::CheckClassTemplate(Scope *S, unsigned TagSpec, TagUseKind TUK, NewTemplate->setInvalidDecl(); NewClass->setInvalidDecl(); } - if (PrevClassTemplate) - mergeDeclAttributes(NewClass, PrevClassTemplate->getTemplatedDecl()); ActOnDocumentableDecl(NewTemplate); -- cgit v1.1