From dd5756c04c98e354b85c4f7eb660ae60c6d341ec Mon Sep 17 00:00:00 2001 From: DeLesley Hutchins Date: Thu, 16 Feb 2012 17:30:51 +0000 Subject: [PATCH] Minor fix to template instantiation, which properly instantiates dependent attributes on static members of templatized classes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150704 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaTemplateInstantiateDecl.cpp | 2 +- test/SemaCXX/warn-thread-safety-analysis.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp index fb771aa30b..f480825412 100644 --- a/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -326,7 +326,7 @@ Decl *TemplateDeclInstantiator::VisitVarDecl(VarDecl *D) { if (Owner->isFunctionOrMethod()) SemaRef.CurrentInstantiationScope->InstantiatedLocal(D, Var); } - SemaRef.InstantiateAttrs(TemplateArgs, D, Var); + SemaRef.InstantiateAttrs(TemplateArgs, D, Var, LateAttrs, StartingScope); // Link instantiations of static data members back to the template from // which they were instantiated. diff --git a/test/SemaCXX/warn-thread-safety-analysis.cpp b/test/SemaCXX/warn-thread-safety-analysis.cpp index 58f351fcd8..8bbaf0398f 100644 --- a/test/SemaCXX/warn-thread-safety-analysis.cpp +++ b/test/SemaCXX/warn-thread-safety-analysis.cpp @@ -1847,6 +1847,7 @@ class CellDelayed { public: // Test dependent guarded_by T data GUARDED_BY(mu_); + static T static_data GUARDED_BY(static_mu_); void fooEx(CellDelayed *other) EXCLUSIVE_LOCKS_REQUIRED(mu_, other->mu_) { this->data = other->data; @@ -1864,6 +1865,7 @@ public: } Mutex mu_; + static Mutex static_mu_; }; void testDelayed() { -- 2.40.0