aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaitlin Sadowski <supertri@google.com>2011-09-08 18:35:21 +0000
committerCaitlin Sadowski <supertri@google.com>2011-09-08 18:35:21 +0000
commitaf37061fea31f3f1d0638edb5486e8d72c701522 (patch)
tree61d961c09af25bfea5a387f724a1d6c10ed0888f
parent978191e0906606e32965cebcf81627d8e8711b13 (diff)
Thread Safety: adding basic no thread safety analysis option
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139310 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/AnalysisBasedWarnings.cpp2
-rw-r--r--test/SemaCXX/warn-thread-safety-analysis.cpp10
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/Sema/AnalysisBasedWarnings.cpp b/lib/Sema/AnalysisBasedWarnings.cpp
index 41b9f3b1a8..642638bf06 100644
--- a/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/lib/Sema/AnalysisBasedWarnings.cpp
@@ -1305,6 +1305,8 @@ static void warnBackEdgeUnequalLocksets(Sema &S, const Lockset LoopReentrySet,
static void checkThreadSafety(Sema &S, AnalysisContext &AC) {
CFG *CFGraph = AC.getCFG();
if (!CFGraph) return;
+ const Decl *D = AC.getDecl();
+ if (D && D->getAttr<NoThreadSafetyAnalysisAttr>()) return;
Lockset::Factory LocksetFactory;
diff --git a/test/SemaCXX/warn-thread-safety-analysis.cpp b/test/SemaCXX/warn-thread-safety-analysis.cpp
index a38d005db5..a834ee34c7 100644
--- a/test/SemaCXX/warn-thread-safety-analysis.cpp
+++ b/test/SemaCXX/warn-thread-safety-analysis.cpp
@@ -314,6 +314,10 @@ class GBFoo {
gb_field = 0; // \
// expected-warning {{writing variable 'gb_field' requires lock 'sls_mu' to be held exclusively}}
}
+
+ void testNoAnal() __attribute__((no_thread_safety_analysis)) {
+ gb_field = 0;
+ }
};
GBFoo GlobalGBFoo __attribute__((guarded_by(sls_mu)));
@@ -570,6 +574,12 @@ void es_fun_7() {
sls_mu.Unlock();
}
+void es_fun_8() __attribute__((no_thread_safety_analysis));
+
+void es_fun_8() {
+ Bar.aa_elr_fun_s();
+}
+
void es_bad_0() {
Bar.aa_elr_fun(); // \
// expected-warning {{calling function 'aa_elr_fun' requires exclusive lock 'aa_mu'}}