aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-10-25 20:20:56 +0000
committerTed Kremenek <kremenek@apple.com>2010-10-25 20:20:56 +0000
commit0d4f7671882a4e902f12504b46eb486dfbf58515 (patch)
tree7a8ba0df181a4995460f67e717a5a26560fed14f
parente8a2d4c32cb2a7840bd91c9cf9b7838ee3f47dc3 (diff)
Add check for UnknownVals for mutexes in ObjCAtSyncChecker. Fixes crash reported in PR 8458.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117300 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Checker/ObjCAtSyncChecker.cpp3
-rw-r--r--test/Analysis/misc-ps.m10
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/Checker/ObjCAtSyncChecker.cpp b/lib/Checker/ObjCAtSyncChecker.cpp
index 41580955a9..f9a3686c01 100644
--- a/lib/Checker/ObjCAtSyncChecker.cpp
+++ b/lib/Checker/ObjCAtSyncChecker.cpp
@@ -57,6 +57,9 @@ void ObjCAtSyncChecker::PreVisitObjCAtSynchronizedStmt(CheckerContext &C,
return;
}
+ if (V.isUnknown())
+ return;
+
// Check for null mutexes.
const GRState *notNullState, *nullState;
llvm::tie(notNullState, nullState) = state->Assume(cast<DefinedSVal>(V));
diff --git a/test/Analysis/misc-ps.m b/test/Analysis/misc-ps.m
index 2409be351c..52dd7e1def 100644
--- a/test/Analysis/misc-ps.m
+++ b/test/Analysis/misc-ps.m
@@ -1149,3 +1149,13 @@ void pr8149(void) {
for (; ({ do { } while (0); 0; });) { }
}
+// PR 8458 - Make sure @synchronized doesn't crash with properties.
+@interface PR8458 {}
+@property(readonly) id lock;
+@end
+
+static
+void __PR8458(PR8458 *x) {
+ @synchronized(x.lock) {} // no-warning
+}
+