aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCaitlin Sadowski <supertri@google.com>2011-09-14 20:09:09 +0000
committerCaitlin Sadowski <supertri@google.com>2011-09-14 20:09:09 +0000
commitdf8327c28d293cf7c6952b86dba26863235dcc0f (patch)
tree1f6b59d5243083a606e8028531ca78e6b68c85e3 /lib
parent19903465e960329c0d5d93327f4046d036b0bc75 (diff)
Thread safety: reverting to use separate warning for requirement to hold any lock
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139723 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Sema/AnalysisBasedWarnings.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/Sema/AnalysisBasedWarnings.cpp b/lib/Sema/AnalysisBasedWarnings.cpp
index 8ea8a67bc7..bbd8fa38fe 100644
--- a/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/lib/Sema/AnalysisBasedWarnings.cpp
@@ -660,9 +660,14 @@ class ThreadSafetyReporter : public clang::thread_safety::ThreadSafetyHandler {
void handleNoMutexHeld(const NamedDecl *D, ProtectedOperationKind POK,
AccessKind AK, SourceLocation Loc) {
- // FIXME: It would be nice if this case printed without single quotes around
- // the phrase 'any mutex'
- handleMutexNotHeld(D, POK, "any mutex", getLockKindFromAccessKind(AK), Loc);
+ assert((POK == POK_VarAccess || POK == POK_VarDereference)
+ && "Only works for variables");
+ unsigned DiagID = POK == POK_VarAccess?
+ diag::warn_variable_requires_any_lock:
+ diag::warn_var_deref_requires_any_lock;
+ PartialDiagnostic Warning = S.PDiag(DiagID)
+ << D->getName() << getLockKindFromAccessKind(AK);
+ Warnings.push_back(DelayedDiag(Loc, Warning));
}
void handleMutexNotHeld(const NamedDecl *D, ProtectedOperationKind POK,
@@ -680,7 +685,7 @@ class ThreadSafetyReporter : public clang::thread_safety::ThreadSafetyHandler {
break;
}
PartialDiagnostic Warning = S.PDiag(DiagID)
- << D->getName().str() << LockName << LK;
+ << D->getName() << LockName << LK;
Warnings.push_back(DelayedDiag(Loc, Warning));
}