diff options
author | DeLesley Hutchins <delesley@google.com> | 2012-02-16 17:30:51 +0000 |
---|---|---|
committer | DeLesley Hutchins <delesley@google.com> | 2012-02-16 17:30:51 +0000 |
commit | dd5756c04c98e354b85c4f7eb660ae60c6d341ec (patch) | |
tree | f532cd13c532c2d2556e9cd0f185974d83d9b6df | |
parent | 634b2930f5a8fc4b153437657ce786ca3fba5b1e (diff) |
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
-rw-r--r-- | lib/Sema/SemaTemplateInstantiateDecl.cpp | 2 | ||||
-rw-r--r-- | test/SemaCXX/warn-thread-safety-analysis.cpp | 2 |
2 files changed, 3 insertions, 1 deletions
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<T> *other) EXCLUSIVE_LOCKS_REQUIRED(mu_, other->mu_) { this->data = other->data; @@ -1864,6 +1865,7 @@ public: } Mutex mu_; + static Mutex static_mu_; }; void testDelayed() { |