From: Ted Kremenek Date: Mon, 25 Oct 2010 20:20:56 +0000 (+0000) Subject: Add check for UnknownVals for mutexes in ObjCAtSyncChecker. Fixes crash reported... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d4f7671882a4e902f12504b46eb486dfbf58515;p=clang 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 --- 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(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 +} +