[cfe-commits] r68849 - in /cfe/trunk: lib/Analysis/GRExprEngine.cpp test/Analysis/NSString.m
Ted Kremenek
kremenek at apple.com
Fri Apr 10 17:54:22 PDT 2009
Author: kremenek
Date: Fri Apr 10 19:54:13 2009
New Revision: 68849
URL: http://llvm.org/viewvc/llvm-project?rev=68849&view=rev
Log:
Add analyzer support for objc_atomicCompareAndSwap()
Modified:
cfe/trunk/lib/Analysis/GRExprEngine.cpp
cfe/trunk/test/Analysis/NSString.m
Modified: cfe/trunk/lib/Analysis/GRExprEngine.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/GRExprEngine.cpp?rev=68849&r1=68848&r2=68849&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/GRExprEngine.cpp (original)
+++ cfe/trunk/lib/Analysis/GRExprEngine.cpp Fri Apr 10 19:54:13 2009
@@ -1377,9 +1377,10 @@
const char *FName = FD->getNameAsCString();
// Check for compare and swap.
- if (strncmp(FName, "OSAtomicCompareAndSwap", 22) == 0)
+ if (strncmp(FName, "OSAtomicCompareAndSwap", 22) == 0 ||
+ strncmp(FName, "objc_atomicCompareAndSwap", 25) == 0)
return EvalOSAtomicCompareAndSwap(Dst, Engine, Builder, CE, L, Pred);
-
+
// FIXME: Other atomics.
return false;
}
Modified: cfe/trunk/test/Analysis/NSString.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NSString.m?rev=68849&r1=68848&r2=68849&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/NSString.m (original)
+++ cfe/trunk/test/Analysis/NSString.m Fri Apr 10 19:54:13 2009
@@ -216,13 +216,23 @@
// Test OSCompareAndSwap
_Bool OSAtomicCompareAndSwapPtr( void *__oldValue, void *__newValue, void * volatile *__theValue );
+extern BOOL objc_atomicCompareAndSwapPtr(id predicate, id replacement, volatile id *objectLocation);
void testOSCompareAndSwap() {
NSString *old = 0;
- NSString *s = [[NSString alloc] init];
+ NSString *s = [[NSString alloc] init]; // no-warning
if (!OSAtomicCompareAndSwapPtr(0, s, (void**) &old))
[s release];
else
[old release];
}
+void test_objc_atomicCompareAndSwap() {
+ NSString *old = 0;
+ NSString *s = [[NSString alloc] init]; // no-warning
+ if (!objc_atomicCompareAndSwapPtr(0, s, &old))
+ [s release];
+ else
+ [old release];
+}
+
More information about the cfe-commits
mailing list