summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-01-28 06:25:48 +0000
committerTed Kremenek <kremenek@apple.com>2009-01-28 06:25:48 +0000
commit4daeccf28fffbc73667669e04529840bf50247d0 (patch)
tree42a059cbea606ef75ce56c6d6c9b0121b6bb81d0 /clang/test
parentf0ec316a04d358c5dd1023a30b1e65f68d15c5ce (diff)
downloadbcm5719-llvm-4daeccf28fffbc73667669e04529840bf50247d0.tar.gz
bcm5719-llvm-4daeccf28fffbc73667669e04529840bf50247d0.zip
retain/release checker: Improve diagnostics to indicate that CF objects are not automatically garbage collected.
llvm-svn: 63187
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Analysis/CFDateGC.m8
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/test/Analysis/CFDateGC.m b/clang/test/Analysis/CFDateGC.m
index 5ed8ae96093..c405fe24e59 100644
--- a/clang/test/Analysis/CFDateGC.m
+++ b/clang/test/Analysis/CFDateGC.m
@@ -26,6 +26,7 @@ typedef signed char BOOL;
static __inline__ __attribute__((always_inline)) id NSMakeCollectable(CFTypeRef cf) {}
@protocol NSObject - (BOOL)isEqual:(id)object;
- (oneway void)release;
+- (id)retain;
@end
@class NSArray;
@@ -46,7 +47,7 @@ CFAbsoluteTime f1_use_after_release() {
// The following two test cases verifies that CFMakeCollectable is a no-op
// in non-GC mode and a "release" in GC mode.
-CFAbsoluteTime f2_leak() {
+CFAbsoluteTime f2_use_after_release() {
CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
CFDateRef date = CFDateCreate(0, t);
CFRetain(date);
@@ -68,6 +69,11 @@ CFAbsoluteTime f2_noleak() {
return t;
}
+void f3_leak_with_gc() {
+ CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
+ [[(id) date retain] release]; // expected-warning{{leak}}
+}
+
// The following test case verifies that we "stop tracking" a retained object
// when it is passed as an argument to an implicitly defined function.
CFAbsoluteTime f4() {
OpenPOWER on IntegriCloud