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