aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeLesley Hutchins <delesley@google.com>2012-02-16 17:30:51 +0000
committerDeLesley Hutchins <delesley@google.com>2012-02-16 17:30:51 +0000
commitdd5756c04c98e354b85c4f7eb660ae60c6d341ec (patch)
treef532cd13c532c2d2556e9cd0f185974d83d9b6df
parent634b2930f5a8fc4b153437657ce786ca3fba5b1e (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.cpp2
-rw-r--r--test/SemaCXX/warn-thread-safety-analysis.cpp2
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() {