From: Ted Kremenek Date: Wed, 29 Apr 2009 16:03:59 +0000 (+0000) Subject: Add test case for transfer function logic for OSCompareAndSwap32Barrier. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a3f4540eba16e23e4589e032260ddff06f363e82;p=clang Add test case for transfer function logic for OSCompareAndSwap32Barrier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70383 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Analysis/NSString.m b/test/Analysis/NSString.m index 3f2b09189e..63b8ef8301 100644 --- a/test/Analysis/NSString.m +++ b/test/Analysis/NSString.m @@ -1,9 +1,9 @@ -// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && -// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s +// RUN: clang-cc -arch i386 -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify %s && +// RUN: clang-cc -arch i386 -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify %s -// NOTWORK: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && -// NOTWORK: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s +// NOTWORK: clang-cc -arch i386 -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify %s && +// NOTWORK: clang-cc -arch i386 -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify %s //===----------------------------------------------------------------------===// // The following code is reduced using delta-debugging from @@ -14,6 +14,7 @@ // both svelte and portable to non-Mac platforms. //===----------------------------------------------------------------------===// +typedef int int32_t; typedef const void * CFTypeRef; typedef const struct __CFString * CFStringRef; typedef const struct __CFAllocator * CFAllocatorRef; @@ -235,6 +236,15 @@ void testOSCompareAndSwap() { [old release]; } +void testOSCompareAndSwap32Barrier() { + NSString *old = 0; + NSString *s = [[NSString alloc] init]; // no-warning + if (!OSAtomicCompareAndSwap32Barrier((int32_t) 0, (int32_t) s, (int32_t*) &old)) + [s release]; + else + [old release]; +} + void test_objc_atomicCompareAndSwap() { NSString *old = 0; NSString *s = [[NSString alloc] init]; // no-warning