diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2018-08-03 19:37:45 +0000 |
---|---|---|
committer | Aaron Ballman <aaron@aaronballman.com> | 2018-08-03 19:37:45 +0000 |
commit | eaa18e60ebe22b9b7cb76562a313f0c3e1cb1810 (patch) | |
tree | c259188dae39afd73351851c6c6b402763075d1a /clang/lib/Analysis/ThreadSafety.cpp | |
parent | 397985db5110031e526385905c30f5dede668d2b (diff) | |
download | bcm5719-llvm-eaa18e60ebe22b9b7cb76562a313f0c3e1cb1810.tar.gz bcm5719-llvm-eaa18e60ebe22b9b7cb76562a313f0c3e1cb1810.zip |
Properly add shared locks to the initial list of locks being tracked, instead of assuming unlock functions always use exclusive locks.
Patch by Aaron Puchert.
llvm-svn: 338912
Diffstat (limited to 'clang/lib/Analysis/ThreadSafety.cpp')
-rw-r--r-- | clang/lib/Analysis/ThreadSafety.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/Analysis/ThreadSafety.cpp b/clang/lib/Analysis/ThreadSafety.cpp index 03cc234dce5..2ebd8270376 100644 --- a/clang/lib/Analysis/ThreadSafety.cpp +++ b/clang/lib/Analysis/ThreadSafety.cpp @@ -2242,8 +2242,8 @@ void ThreadSafetyAnalyzer::runAnalysis(AnalysisDeclContext &AC) { // We must ignore such methods. if (A->args_size() == 0) return; - // FIXME -- deal with exclusive vs. shared unlock functions? - getMutexIDs(ExclusiveLocksToAdd, A, nullptr, D); + getMutexIDs(A->isShared() ? SharedLocksToAdd : ExclusiveLocksToAdd, A, + nullptr, D); getMutexIDs(LocksReleased, A, nullptr, D); CapDiagKind = ClassifyDiagnostic(A); } else if (const auto *A = dyn_cast<AcquireCapabilityAttr>(Attr)) { |