summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-02-18 22:11:23 +0000
committerTed Kremenek <kremenek@apple.com>2009-02-18 22:11:23 +0000
commit443e040d06091aa5d86cfcba0f7268c3ac64ba6f (patch)
tree336d38a1e01650f8a9f416a8cd3c865d66548dc6 /clang
parentea3a9e270cc73fbde3e0f7c132f845a74adb9467 (diff)
downloadbcm5719-llvm-443e040d06091aa5d86cfcba0f7268c3ac64ba6f.tar.gz
bcm5719-llvm-443e040d06091aa5d86cfcba0f7268c3ac64ba6f.zip
Add a few more GC-only test cases for the retain/release checker.
llvm-svn: 64960
Diffstat (limited to 'clang')
-rw-r--r--clang/test/Analysis/retain-release-gc-only.m18
1 files changed, 16 insertions, 2 deletions
diff --git a/clang/test/Analysis/retain-release-gc-only.m b/clang/test/Analysis/retain-release-gc-only.m
index 32a9c877ac1..231eec9aa69 100644
--- a/clang/test/Analysis/retain-release-gc-only.m
+++ b/clang/test/Analysis/retain-release-gc-only.m
@@ -13,6 +13,7 @@ typedef const struct __CFAllocator * CFAllocatorRef;
extern const CFAllocatorRef kCFAllocatorDefault;
extern CFTypeRef CFRetain(CFTypeRef cf);
extern void CFRelease(CFTypeRef cf);
+CFTypeRef CFMakeCollectable(CFTypeRef cf);
typedef struct {
}
CFArrayCallBacks;
@@ -75,7 +76,20 @@ extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn stat
//===----------------------------------------------------------------------===//
void f1() {
- CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+ CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
id x = [(id) A autorelease];
- CFRelease((CFMutableArrayRef) x); // no-warning
+ CFRelease((CFMutableArrayRef) x);
+}
+
+void f2() {
+ CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}}
+ id x = [(id) A retain];
+ [x release];
+ [x release];
+}
+
+void f3() {
+ CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}}
+ CFMakeCollectable(A);
+ CFRetain(A);
}
OpenPOWER on IntegriCloud