Revert "Rework the retain-release.m test to use FileCheck and the "text" output"

Apparently the output of this test is not deterministic.  Needs investigation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163377 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m
index 10753b4..3a9649c 100644
--- a/test/Analysis/retain-release.m
+++ b/test/Analysis/retain-release.m
@@ -1,7 +1,5 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -analyzer-output=text -fblocks -Wno-objc-root-class %s > %t.objc 2>&1
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -analyzer-output=text -fblocks -Wno-objc-root-class -x objective-c++ %s > %t.objcpp 2>&1
-// RUN: FileCheck -exact-match -input-file=%t.objc %s
-// RUN: FileCheck -exact-match -input-file=%t.objcpp %s
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -fblocks -verify -Wno-objc-root-class %s
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -fblocks -verify -x objective-c++ -Wno-objc-root-class %s
 
 #if __has_feature(attribute_ns_returns_retained)
 #define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
@@ -319,9 +317,9 @@
   CFDateRef date = CFDateCreate(0, t);
   CFRetain(date);
   CFRelease(date);
-  CFDateGetAbsoluteTime(date);
+  CFDateGetAbsoluteTime(date); // no-warning
   CFRelease(date);
-  t = CFDateGetAbsoluteTime(date);
+  t = CFDateGetAbsoluteTime(date);   // expected-warning{{Reference-counted object is used after it is released}}
   return t;
 }
 
@@ -330,9 +328,9 @@
   CFDateRef date = CFDateCreate(0, t);  
   [((NSDate*) date) retain];
   CFRelease(date);
-  CFDateGetAbsoluteTime(date);
+  CFDateGetAbsoluteTime(date); // no-warning
   [((NSDate*) date) release];
-  t = CFDateGetAbsoluteTime(date);
+  t = CFDateGetAbsoluteTime(date);   // expected-warning{{Reference-counted object is used after it is released}}
   return t;
 }
 
@@ -347,10 +345,10 @@
   CFDateRef date = CFDateCreate(0, t);  
   [((NSDate*) date) retain];
   CFRelease(date);
-  CFDateGetAbsoluteTime(date);
+  CFDateGetAbsoluteTime(date); // no-warning
   global_x = (NSDate*) date;  
   [((NSDate*) date) release];
-  t = CFDateGetAbsoluteTime(date);
+  t = CFDateGetAbsoluteTime(date);   // no-warning
   return t;
 }
 
@@ -363,7 +361,7 @@
 
 CFAbsoluteTime f5(int x) {  
   CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);
+  CFDateRef date = CFDateCreate(0, t); // expected-warning{{leak}}
   
   if (x)
     CFRelease(date);
@@ -374,7 +372,7 @@
 // Test a leak involving the return.
 
 CFDateRef f6(int x) {  
-  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
+  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());  // expected-warning{{leak}}
   CFRetain(date);
   return date;
 }
@@ -384,7 +382,7 @@
 CFDateRef f7() {
   CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());  //expected-warning{{leak}}
   CFRetain(date);
-  date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
+  date = CFDateCreate(0, CFAbsoluteTimeGetCurrent()); // expected-warning {{leak}}
   return date;
 }
 
@@ -393,16 +391,16 @@
 CFDateRef MyDateCreate();
 
 CFDateRef f8() {
-  CFDateRef date = MyDateCreate();
+  CFDateRef date = MyDateCreate(); // expected-warning{{leak}}
   CFRetain(date);  
   return date;
 }
 
 __attribute__((cf_returns_retained)) CFDateRef f9() {
-  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
+  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent()); // no-warning
   int *p = 0;
   // When allocations fail, CFDateCreate can return null.
-  if (!date) *p = 1;
+  if (!date) *p = 1; // expected-warning{{null}}
   return date;
 }
 
@@ -411,23 +409,23 @@
 // http://developer.apple.com/DOCUMENTATION/DARWIN/Reference/DiscArbitrationFramework/
 //
 void f10(io_service_t media, DADiskRef d, CFStringRef s) {
-  DADiskRef disk = DADiskCreateFromBSDName(kCFAllocatorDefault, 0, "hello");
+  DADiskRef disk = DADiskCreateFromBSDName(kCFAllocatorDefault, 0, "hello"); // expected-warning{{leak}}
   if (disk) NSLog(@"ok");
   
-  disk = DADiskCreateFromIOMedia(kCFAllocatorDefault, 0, media);
+  disk = DADiskCreateFromIOMedia(kCFAllocatorDefault, 0, media); // expected-warning{{leak}}
   if (disk) NSLog(@"ok");
 
-  CFDictionaryRef dict = DADiskCopyDescription(d);
+  CFDictionaryRef dict = DADiskCopyDescription(d);  // expected-warning{{leak}}
   if (dict) NSLog(@"ok"); 
   
-  disk = DADiskCopyWholeDisk(d);
+  disk = DADiskCopyWholeDisk(d); // expected-warning{{leak}}
   if (disk) NSLog(@"ok");
     
-  DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault,
+  DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault,   // expected-warning{{leak}}
                                                 kDAReturnSuccess, s);
   if (dissenter) NSLog(@"ok");
   
-  DASessionRef session = DASessionCreate(kCFAllocatorDefault);
+  DASessionRef session = DASessionCreate(kCFAllocatorDefault);  // expected-warning{{leak}}
   if (session) NSLog(@"ok");
 }
 
@@ -444,16 +442,16 @@
   CFArrayAppendValue(A, s1);
   
   // Decrement the reference count.
-  CFRelease(s1);
+  CFRelease(s1); // no-warning
   
   // Get the string.  We don't own it.
   s1 = (CFStringRef) CFArrayGetValueAtIndex(A, 0);
   
   // Release the array.
-  CFRelease(A);
+  CFRelease(A); // no-warning
   
   // Release the string.  This is a bug.
-  CFRelease(s1);
+  CFRelease(s1); // expected-warning{{Incorrect decrement of the reference count}}
 }
 
 // PR 3337: Handle functions declared using typedefs.
@@ -461,40 +459,40 @@
 CREATEFUN MyCreateFun;
 
 void f12() {
-  CFTypeRef o = MyCreateFun();
+  CFTypeRef o = MyCreateFun(); // expected-warning {{leak}}
 }
 
 void f13_autorelease() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-  [(id) A autorelease];
+  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
+  [(id) A autorelease]; // no-warning
 }
 
 void f13_autorelease_b() {
   CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
   [(id) A autorelease];
-  [(id) A autorelease];
+  [(id) A autorelease]; // expected-warning{{Object sent -autorelease too many times}}
 }
 
 CFMutableArrayRef f13_autorelease_c() {
   CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
   [(id) A autorelease];
   [(id) A autorelease]; 
-  return A;
+  return A; // expected-warning{{Object sent -autorelease too many times}}
 }
 
 CFMutableArrayRef f13_autorelease_d() {
   CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
   [(id) A autorelease];
   [(id) A autorelease]; 
-  CFMutableArrayRef B = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-  CFRelease(B);
+  CFMutableArrayRef B = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{Object sent -autorelease too many times}}
+  CFRelease(B); // no-warning
   while (1) {}
 }
 
 
 // This case exercises the logic where the leak site is the same as the allocation site.
 void f14_leakimmediately() {
-  CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}}
 }
 
 // Test that we track an allocated object beyond the point where the *name*
@@ -504,7 +502,7 @@
   CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
   CFMutableArrayRef *B = &A;
   // At this point, the name 'A' is no longer live.
-  CFRelease(*B);
+  CFRelease(*B);  // no-warning
 }
 
 // Test when we pass NULL to CFRetain/CFRelease.
@@ -513,10 +511,10 @@
     return;
 
   if (x) {
-    CFRelease(p);
+    CFRelease(p); // expected-warning{{Null pointer argument in call to CFRelease}}
   }
   else {
-    CFRetain(p);
+    CFRetain(p); // expected-warning{{Null pointer argument in call to CFRetain}}
   }
 }
 
@@ -525,12 +523,12 @@
   if (x) {
     CFRelease(p);
     if (!p)
-      CFRelease(0);
+      CFRelease(0); // no-warning
   }
   else {
     CFRetain(p);
     if (!p)
-      CFRetain(0);
+      CFRetain(0); // no-warning
   }
 }
 
@@ -545,7 +543,7 @@
 
 @implementation SelfIvarTest
 - (void)test_self_tracking {
-  myObj = (id) CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  myObj = (id) CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
 }
 @end
 
@@ -558,7 +556,7 @@
 @implementation TestReturnNotOwnedWhenExpectedOwned
 - (NSString*)newString {
   NSString *s = [NSString stringWithUTF8String:"hello"];
-  return s;
+  return s; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
 }
 @end
 
@@ -571,7 +569,7 @@
   // will be a toggled flag in the future.  It can indeed return null, but
   // Cocoa programmers generally aren't expected to reason about out-of-memory
   // conditions.
-  NSString *kind = [[NSString alloc] initWithUTF8String:inkind];
+  NSString *kind = [[NSString alloc] initWithUTF8String:inkind];  // expected-warning{{leak}}
   
   // We do allow stringWithUTF8String to fail.  This isn't really correct, as
   // far as returning 0.  In most error conditions it will throw an exception.
@@ -593,13 +591,13 @@
     kindC = [kind UTF8String];
   if(name)
     nameC = [name UTF8String];
-  if(!isFoo(kindC[0]))
+  if(!isFoo(kindC[0])) // expected-warning{{null}}
     return;
-  if(!isFoo(nameC[0]))
+  if(!isFoo(nameC[0])) // no-warning
     return;
 
   [kind release];
-  [name release];
+  [name release]; // expected-warning{{Incorrect decrement of the reference count}}
 }
 
 // PR 3677 - 'allocWithZone' should be treated as following the Cocoa naming
@@ -607,14 +605,14 @@
 @interface PR3677: NSObject @end
 @implementation PR3677
 + (id)allocWithZone:(NSZone *)inZone {
-  return [super allocWithZone:inZone];
+  return [super allocWithZone:inZone];  // no-warning
 }
 @end
 
 // PR 3820 - Reason about calls to -dealloc
 void pr3820_DeallocInsteadOfRelease(void)
 {
-  id foo = [[NSString alloc] init];
+  id foo = [[NSString alloc] init]; // no-warning
   [foo dealloc];
   // foo is not leaked, since it has been deallocated.
 }
@@ -623,7 +621,7 @@
 {
   id foo = [[NSString alloc] init];
   [foo dealloc];
-  [foo release];
+  [foo release];  // expected-warning{{used after it is release}}
   // NSInternalInconsistencyException: message sent to deallocated object
 }
 
@@ -632,7 +630,7 @@
   NSLog(@"\n\n[%s]", __FUNCTION__);
   id foo = [[NSString alloc] init];
   [foo release];
-  [foo dealloc];
+  [foo dealloc]; // expected-warning{{used after it is released}}
   // message sent to released object
 }
 
@@ -648,7 +646,7 @@
         if (*s == ':') {
           ++s;
           --length;
-          name = [[NSString alloc] init];
+          name = [[NSString alloc] init]; // no-warning
           break;
         }
         ++s;
@@ -659,7 +657,7 @@
         name = 0;
       }
       if (length == 0) { // no ':' found -> use it all as name
-        name = [[NSString alloc] init];
+        name = [[NSString alloc] init]; // no-warning
       }
     }
   }
@@ -684,7 +682,7 @@
 @implementation rdar_6833332
 @synthesize window;
 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
- NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain];
+ NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain]; // expected-warning{{leak}}
 
  [dict setObject:@"foo" forKey:@"bar"];
 
@@ -696,7 +694,7 @@
 }
 
 - (void)radar10102244 {
- NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain];
+ NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain]; // expected-warning{{leak}} 
  if (window) 
    NSLog(@"%@", window);    
 }
@@ -709,7 +707,7 @@
 int rdar_6257780_Case1() {
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   NSArray *array = [NSArray array];
-  [array release];
+  [array release]; // expected-warning{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
   [pool drain];
   return 0;
 }
@@ -734,7 +732,7 @@
  [dictionary setObject:array forKey:@"key"];
  [array release];
  // Using 'array' here should be fine
- NSLog(@"array = %@\n", array);
+ NSLog(@"array = %@\n", array); // no-warning
  // Now the array is released
  [dictionary release];
  [pool drain];
@@ -754,10 +752,10 @@
 
 @implementation RDar6877235
 - (CFTypeRef)_copyCFTypeRef {
-  return [[NSString alloc] init];
+  return [[NSString alloc] init]; // no-warning
 }
 - (OtherRef)_copyOtherRef {
-  return [[NSString alloc] init];
+  return [[NSString alloc] init]; // no-warning
 }
 @end
 
@@ -780,18 +778,18 @@
 @implementation RDar6320065
 - (id)initReturningNewClass {
   [self release];
-  self = [[RDar6320065Subclass alloc] init];
+  self = [[RDar6320065Subclass alloc] init]; // no-warning
   return self;
 }
 - (id)_initReturningNewClassBad {
   [self release];
-  [[RDar6320065Subclass alloc] init];
+  [[RDar6320065Subclass alloc] init]; // expected-warning {{leak}}
   return self;
 }
 - (id)initReturningNewClassBad2 {
   [self release];
   self = [[RDar6320065Subclass alloc] init];
-  return [self autorelease];
+  return [self autorelease]; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
 }
 
 @end
@@ -800,7 +798,7 @@
 @end
 
 int RDar6320065_test() {
-  RDar6320065 *test = [[RDar6320065 alloc] init];
+  RDar6320065 *test = [[RDar6320065 alloc] init]; // no-warning
   [test release];
   return 0;
 }
@@ -813,8 +811,8 @@
 @interface RDar7129086 : NSObject {} @end
 @implementation RDar7129086
 - (id)awakeAfterUsingCoder:(NSCoder *)aDecoder {
-  [self release];
-  return [NSString alloc];
+  [self release]; // no-warning
+  return [NSString alloc];  // no-warning
 }
 @end
 
@@ -829,15 +827,15 @@
 @end
 
 @implementation RDar6859457 
-- (NSString*) NoCopyString { return [[NSString alloc] init]; }
-- (NSString*) noCopyString { return [[NSString alloc] init]; }
+- (NSString*) NoCopyString { return [[NSString alloc] init]; } // expected-warning{{leak}}
+- (NSString*) noCopyString { return [[NSString alloc] init]; } // expected-warning{{leak}}
 @end
 
 void test_RDar6859457(RDar6859457 *x, void *bytes, NSUInteger dataLength) {
-  [x NoCopyString];
-  [x noCopyString];
-  [NSData dataWithBytesNoCopy:bytes length:dataLength];
-  [NSData dataWithBytesNoCopy:bytes length:dataLength freeWhenDone:1];
+  [x NoCopyString]; // expected-warning{{leak}}
+  [x noCopyString]; // expected-warning{{leak}}
+  [NSData dataWithBytesNoCopy:bytes length:dataLength];  // no-warning
+  [NSData dataWithBytesNoCopy:bytes length:dataLength freeWhenDone:1]; // no-warning
 }
 
 //===----------------------------------------------------------------------===//
@@ -847,8 +845,8 @@
 
 static void PR4230(void)
 {
-  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-  NSString *object = [[[NSString alloc] init] autorelease];
+  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // no-warning
+  NSString *object = [[[NSString alloc] init] autorelease]; // no-warning
   return;
 }
 
@@ -862,7 +860,7 @@
 
 @implementation TestNullIdentifier
 + (id):(int)x, ... {
-  return [[NSString alloc] init];
+  return [[NSString alloc] init]; // expected-warning{{leak}}
 }
 @end
 
@@ -881,7 +879,7 @@
 
 @implementation RDar6893565
 -(TD6893565)newThing {  
-  return (TD6893565) [[NSString alloc] init];
+  return (TD6893565) [[NSString alloc] init]; // no-warning
 }
 @end
 
@@ -892,10 +890,10 @@
 void rdar6902710(QCView *view, QCRenderer *renderer, CIContext *context,
                  NSString *str, CIImage *img, CGRect rect,
                  CIFormat form, CGColorSpaceRef cs) {
-  [view createSnapshotImageOfType:str];
-  [renderer createSnapshotImageOfType:str];
-  [context createCGImage:img fromRect:rect];
-  [context createCGImage:img fromRect:rect format:form colorSpace:cs];
+  [view createSnapshotImageOfType:str]; // expected-warning{{leak}}
+  [renderer createSnapshotImageOfType:str]; // expected-warning{{leak}}
+  [context createCGImage:img fromRect:rect]; // expected-warning{{leak}}
+  [context createCGImage:img fromRect:rect format:form colorSpace:cs]; // expected-warning{{leak}}
 }
 
 //===----------------------------------------------------------------------===//
@@ -904,7 +902,7 @@
 //===----------------------------------------------------------------------===//
 
 void rdar6945561(CIContext *context, CGSize size, CFDictionaryRef d) {
-  [context createCGLayerWithSize:size info:d];
+  [context createCGLayerWithSize:size info:d]; // expected-warning{{leak}}
 }
 
 //===----------------------------------------------------------------------===//
@@ -913,15 +911,15 @@
 //===----------------------------------------------------------------------===//
 
 void IOBSDNameMatching_wrapper(mach_port_t masterPort, uint32_t options,  const char * bsdName) {  
-  IOBSDNameMatching(masterPort, options, bsdName);
+  IOBSDNameMatching(masterPort, options, bsdName); // expected-warning{{leak}}
 }
 
 void IOServiceMatching_wrapper(const char * name) {
-  IOServiceMatching(name);
+  IOServiceMatching(name); // expected-warning{{leak}}
 }
 
 void IOServiceNameMatching_wrapper(const char * name) {
-  IOServiceNameMatching(name);
+  IOServiceNameMatching(name); // expected-warning{{leak}}
 }
 
 CF_RETURNS_RETAINED CFDictionaryRef CreateDict();
@@ -931,29 +929,29 @@
 
   CFDictionaryRef matching = CreateDict();
   CFRelease(matching);
-  IOServiceAddNotification(masterPort, notificationType, matching,
+  IOServiceAddNotification(masterPort, notificationType, matching, // expected-warning{{used after it is released}} expected-warning{{deprecated}}
                            wakePort, reference, notification);
 }
 
 void IORegistryEntryIDMatching_wrapper(uint64_t entryID ) {
-  IORegistryEntryIDMatching(entryID);
+  IORegistryEntryIDMatching(entryID); // expected-warning{{leak}}
 }
 
 void IOOpenFirmwarePathMatching_wrapper(mach_port_t masterPort, uint32_t options,
                                         const char * path) {
-  IOOpenFirmwarePathMatching(masterPort, options, path);
+  IOOpenFirmwarePathMatching(masterPort, options, path); // expected-warning{{leak}}
 }
 
 void IOServiceGetMatchingService_wrapper(mach_port_t masterPort) {
   CFDictionaryRef matching = CreateDict();
   IOServiceGetMatchingService(masterPort, matching);
-  CFRelease(matching);
+  CFRelease(matching); // expected-warning{{used after it is released}}
 }
 
 void IOServiceGetMatchingServices_wrapper(mach_port_t masterPort, io_iterator_t *existing) {
   CFDictionaryRef matching = CreateDict();
   IOServiceGetMatchingServices(masterPort, matching, existing);
-  CFRelease(matching);
+  CFRelease(matching); // expected-warning{{used after it is released}}
 }
 
 void IOServiceAddMatchingNotification_wrapper(IONotificationPortRef notifyPort, const io_name_t notificationType, 
@@ -961,7 +959,7 @@
     
   CFDictionaryRef matching = CreateDict();
   IOServiceAddMatchingNotification(notifyPort, notificationType, matching, callback, refCon, notification);
-  CFRelease(matching);
+  CFRelease(matching); // expected-warning{{used after it is released}}
 }
 
 //===----------------------------------------------------------------------===//
@@ -978,9 +976,9 @@
   signed z = 1;
   CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
   if (value) {
-    CFDictionaryAddValue(x, val_key, (void*)value);
+    CFDictionaryAddValue(x, val_key, (void*)value); // no-warning
     CFRelease(value);
-    CFDictionaryAddValue(y, val_key, (void*)value);
+    CFDictionaryAddValue(y, val_key, (void*)value); // no-warning
   }
 }
 
@@ -993,7 +991,7 @@
   CFArrayAppendValue(x, value);
   CFRelease(value);
   CFRetain(value);
-  CFRelease(value);
+  CFRelease(value); // no-warning
 }
 
 // <rdar://problem/7152619>
@@ -1002,7 +1000,7 @@
   CFAttributedStringRef string = CFAttributedStringCreate(kCFAllocatorDefault, str, 0);
   CFMutableAttributedStringRef attrString = CFAttributedStringCreateMutableCopy(kCFAllocatorDefault, 100, string);
   CFRelease(string);
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
   CFAttributedStringSetAttribute(attrString, CFRangeMake(0, 1), str, number);
   [number release];
   [number retain];
@@ -1027,7 +1025,7 @@
   }; // End color
   
   CGGradientRef myGradient =
-    CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(),
+    CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), // expected-warning{{leak}}
       components, locations, num_locations);
 
   CGContextDrawLinearGradient(myContext, myGradient, myStartPoint, myEndPoint,
@@ -1049,7 +1047,7 @@
   }; // End color
   
   CGGradientRef myGradient =
-   CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), components, locations, num_locations);
+   CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), components, locations, num_locations); // expected-warning 2 {{leak}}
 
   CGContextDrawLinearGradient(myContext, myGradient, myStartPoint, myEndPoint,
                               0);
@@ -1083,11 +1081,11 @@
   return 0;
 }
 void rdar_7299394(pthread_attr_t *attr, pthread_t *thread, void *args) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
   pthread_create(thread, attr, rdar_7299394_start_routine, number);
 }
 void rdar_7299394_positive(pthread_attr_t *attr, pthread_t *thread) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
 }
 
 //===----------------------------------------------------------------------===//
@@ -1096,7 +1094,7 @@
 //===----------------------------------------------------------------------===//
 
 void rdar11282706(pthread_key_t key) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
   pthread_setspecific(key, (void*) number);
 }
 
@@ -1171,7 +1169,7 @@
   // For the allocated object, it doesn't really matter what type it is
   // for the purpose of this test.  All we want to show is that
   // this is freed later by the callback.
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
   
   return CVPixelBufferCreateWithBytes(allocator, width, height, pixelFormatType,
                                 baseAddress, bytesPerRow, releaseCallback,
@@ -1190,7 +1188,7 @@
     // For the allocated object, it doesn't really matter what type it is
     // for the purpose of this test.  All we want to show is that
     // this is freed later by the callback.
-    NSNumber *number = [[NSNumber alloc] initWithInt:5];
+    NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
 
     return CVPixelBufferCreateWithPlanarBytes(allocator,
               width, height, pixelFormatType, dataPtr, dataSize,
@@ -1220,9 +1218,9 @@
     // For the allocated object, it doesn't really matter what type it is
     // for the purpose of this test.  All we want to show is that
     // this is freed later by the callback.
-    NSNumber *number = [[NSNumber alloc] initWithInt:5];
+    NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
 
-  CGBitmapContextCreateWithData(data, width, height, bitsPerComponent,
+  CGBitmapContextCreateWithData(data, width, height, bitsPerComponent, // expected-warning{{leak}}
     bytesPerRow, space, bitmapInfo, releaseCallback, number);
 }
 
@@ -1240,11 +1238,11 @@
 @end
 
 void rdar7265711_a(RDar7265711 *x) {
-  id y = [x new_stuff];
+  id y = [x new_stuff]; // expected-warning{{leak}}
 }
 
 void rdar7265711_b(RDar7265711 *x) {
-  id y = [x new_stuff];
+  id y = [x new_stuff]; // no-warning
   [y release];
 }
 
@@ -1260,8 +1258,8 @@
 void rdar7306898(void) {
   // 'dragCopyCursor' does not follow Cocoa's fundamental rule.  It is a noun, not an sentence
   // implying a 'copy' of something.
-  NSCursor *c =  [NSCursor dragCopyCursor];
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSCursor *c =  [NSCursor dragCopyCursor]; // no-warning
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
 }
 
 //===----------------------------------------------------------------------===//
@@ -1271,10 +1269,10 @@
 
 @interface RDar7252064 : NSObject @end
 void rdar7252064(void) {
-  [RDar7252064 release];
-  [RDar7252064 retain];
-  [RDar7252064 autorelease];
-  [NSAutoreleasePool drain];
+  [RDar7252064 release]; // expected-warning{{The 'release' message should be sent to instances of class 'RDar7252064' and not the class directly}}
+  [RDar7252064 retain]; // expected-warning{{The 'retain' message should be sent to instances of class 'RDar7252064' and not the class directly}}
+  [RDar7252064 autorelease]; // expected-warning{{The 'autorelease' message should be sent to instances of class 'RDar7252064' and not the class directly}}
+  [NSAutoreleasePool drain]; // expected-warning{{method '+drain' not found}} expected-warning{{The 'drain' message should be sent to instances of class 'NSAutoreleasePool' and not the class directly}}
 }
 
 //===----------------------------------------------------------------------===//
@@ -1286,38 +1284,38 @@
 @protocol FooP;
 
 @interface TestOwnershipAttr : NSObject
-- (NSString*) returnsAnOwnedString  NS_RETURNS_RETAINED;
-- (NSString*) returnsAnOwnedCFString  CF_RETURNS_RETAINED;
-- (MyStringTy) returnsAnOwnedTypedString NS_RETURNS_RETAINED;
-- (NSString*) newString NS_RETURNS_NOT_RETAINED;
+- (NSString*) returnsAnOwnedString  NS_RETURNS_RETAINED; // no-warning
+- (NSString*) returnsAnOwnedCFString  CF_RETURNS_RETAINED; // no-warning
+- (MyStringTy) returnsAnOwnedTypedString NS_RETURNS_RETAINED; // no-warning
+- (NSString*) newString NS_RETURNS_NOT_RETAINED; // no-warning
 - (NSString*) newStringNoAttr;
-- (int) returnsAnOwnedInt NS_RETURNS_RETAINED;
+- (int) returnsAnOwnedInt NS_RETURNS_RETAINED; // expected-warning{{'ns_returns_retained' attribute only applies to methods that return an Objective-C object}}
 - (id) pseudoInit NS_CONSUMES_SELF NS_RETURNS_RETAINED;
 + (void) consume:(id) NS_CONSUMED x;
 + (void) consume2:(id) CF_CONSUMED x;
 @end
 
-static int ownership_attribute_doesnt_go_here NS_RETURNS_RETAINED;
+static int ownership_attribute_doesnt_go_here NS_RETURNS_RETAINED; // expected-warning{{'ns_returns_retained' attribute only applies to functions and methods}}
 
 void test_attr_1(TestOwnershipAttr *X) {
-  NSString *str = [X returnsAnOwnedString];
+  NSString *str = [X returnsAnOwnedString]; // expected-warning{{leak}}
 }
 
 void test_attr_1b(TestOwnershipAttr *X) {
-  NSString *str = [X returnsAnOwnedCFString];
+  NSString *str = [X returnsAnOwnedCFString]; // expected-warning{{leak}}
 }
 
 void test_attr1c(TestOwnershipAttr *X) {
-  NSString *str = [X newString];
-  NSString *str2 = [X newStringNoAttr];
+  NSString *str = [X newString]; // no-warning
+  NSString *str2 = [X newStringNoAttr]; // expected-warning{{leak}}
 }
 
 void testattr2_a() {
-  TestOwnershipAttr *x = [TestOwnershipAttr alloc];
+  TestOwnershipAttr *x = [TestOwnershipAttr alloc]; // expected-warning{{leak}}
 }
 
 void testattr2_b() {
-  TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];
+  TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];  // expected-warning{{leak}}
 }
 
 void testattr2_b_11358224_self_assign_looses_the_leak() {
@@ -1326,14 +1324,14 @@
 }
 
 void testattr2_c() {
-  TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];
+  TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit]; // no-warning
   [x release];
 }
 
 void testattr3() {
-  TestOwnershipAttr *x = [TestOwnershipAttr alloc];
+  TestOwnershipAttr *x = [TestOwnershipAttr alloc]; // no-warning
   [TestOwnershipAttr consume:x];
-  TestOwnershipAttr *y = [TestOwnershipAttr alloc];
+  TestOwnershipAttr *y = [TestOwnershipAttr alloc]; // no-warning
   [TestOwnershipAttr consume2:y];
 }
 
@@ -1341,19 +1339,19 @@
 void consume_cf(id CF_CONSUMED x);
 
 void testattr4() {
-  TestOwnershipAttr *x = [TestOwnershipAttr alloc];
+  TestOwnershipAttr *x = [TestOwnershipAttr alloc]; // no-warning
   consume_ns(x);
-  TestOwnershipAttr *y = [TestOwnershipAttr alloc];
+  TestOwnershipAttr *y = [TestOwnershipAttr alloc]; // no-warning
   consume_cf(y);
 }
 
 @interface TestOwnershipAttr2 : NSObject
-- (NSString*) newString NS_RETURNS_NOT_RETAINED;
+- (NSString*) newString NS_RETURNS_NOT_RETAINED; // no-warning
 @end
 
 @implementation TestOwnershipAttr2
 - (NSString*) newString {
-  return [NSString alloc];
+  return [NSString alloc]; // expected-warning {{Potential leak of an object}}
 }
 @end
 
@@ -1386,20 +1384,20 @@
 }
 
 - (CFDateRef) newCFRetainedAsCFNoAttr {
-  return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease];
+  return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease]; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
 }
 
 - (NSDate*) alsoReturnsRetained {
-  return (NSDate*) returnsRetainedCFDate();
+  return (NSDate*) returnsRetainedCFDate(); // expected-warning{{leak}}
 }
 
 - (CFDateRef) alsoReturnsRetainedAsCF {
-  return returnsRetainedCFDate();
+  return returnsRetainedCFDate(); // expected-warning{{leak}}
 }
 
 
 - (NSDate*) returnsNSRetained {
-  return (NSDate*) returnsRetainedCFDate();
+  return (NSDate*) returnsRetainedCFDate(); // no-warning
 }
 @end
 
@@ -1415,25 +1413,25 @@
 
 void test_panic_negative() {
   signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
+  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);  // expected-warning{{leak}}
 }
 
 void test_panic_positive() {
   signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
+  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // no-warning
   panic();
 }
 
 void test_panic_neg_2(int x) {
   signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
+  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // expected-warning{{leak}}
   if (x)
     panic();
 }
 
 void test_panic_pos_2(int x) {
   signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
+  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // no-warning
   if (x)
     panic();
   if (!x) {
@@ -1449,28 +1447,28 @@
 //===----------------------------------------------------------------------===//
 
 void test_blocks_1_pos(void) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
   ^{}();
 }
 
 void test_blocks_1_indirect_release(void) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
   ^{ [number release]; }();
 }
 
 void test_blocks_1_indirect_retain(void) {
   // Eventually this should be reported as a leak.
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
   ^{ [number retain]; }();
 }
 
 void test_blocks_1_indirect_release_via_call(void) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
   ^(NSObject *o){ [o release]; }(number);
 }
 
 void test_blocks_1_indirect_retain_via_call(void) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5];
+  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning {{leak}}
   ^(NSObject *o){ [o retain]; }(number);
 }
 
@@ -1505,7 +1503,7 @@
 - (NSDate*) rdar8356342:(NSDate*)inValue {
   NSDate *outValue = inValue;
   if (outValue == 0)
-    outValue = [[NSDate alloc] init];
+    outValue = [[NSDate alloc] init]; // no-warning
 
   if (outValue != inValue)
     [outValue autorelease];
@@ -1528,7 +1526,7 @@
     while (error_to_dump != ((void*)0)) {
         CFDictionaryRef info;
 
-        info = CFErrorCopyUserInfo(error_to_dump);
+        info = CFErrorCopyUserInfo(error_to_dump); // expected-warning{{Potential leak of an object}}
 
         if (info != ((void*)0)) {
         }
@@ -1574,52 +1572,52 @@
 // Test camelcase support for CF conventions.  While Core Foundation APIs
 // don't use camel casing, other code is allowed to use it.
 CFArrayRef camelcase_create_1() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
 }
 
 CFArrayRef camelcase_createno() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
 }
 
 CFArrayRef camelcase_copy() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
 }
 
 CFArrayRef camelcase_copying() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
 }
 
 CFArrayRef copyCamelCase() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
 }
 
 CFArrayRef __copyCamelCase() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
 }
 
 CFArrayRef __createCamelCase() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
 }
 
 CFArrayRef camel_create() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
 }
 
 
 CFArrayRef camel_creat() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
 }
 
 CFArrayRef camel_copy() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
 }
 
 CFArrayRef camel_copyMachine() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
 }
 
 CFArrayRef camel_copymachine() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
+  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
 }
 
 // rdar://problem/8024350
@@ -1640,14 +1638,14 @@
 // Radar 6582778.
 void rdar6582778(void) {
   CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFTypeRef vals[] = { CFDateCreate(0, t) };
+  CFTypeRef vals[] = { CFDateCreate(0, t) }; // expected-warning {{leak}}
 }
 
 CFTypeRef global;
 
 void rdar6582778_2(void) {
   CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  global = CFDateCreate(0, t);
+  global = CFDateCreate(0, t); // no-warning
 }
 
 // <rdar://problem/10232019> - Test that objects passed to containers
@@ -1660,7 +1658,7 @@
   [array addObject:string];
   [string release];
 
-  NSString *otherString = [string stringByAppendingString:@"bar"];
+  NSString *otherString = [string stringByAppendingString:@"bar"]; // no-warning
   NSLog(@"%@", otherString);
 }
 
@@ -1670,7 +1668,7 @@
   NSString *string = [[NSString alloc] initWithUTF8String:"foo"];
   [string release];
 
-  NSString *otherString = [string stringByAppendingString:@"bar"];
+  NSString *otherString = [string stringByAppendingString:@"bar"]; // expected-warning {{Reference-counted object is used after it is release}}
   NSLog(@"%@", otherString);
 }
 
@@ -1683,7 +1681,7 @@
 void rdar9658496() {
   CFStringRef cf;
   xpc_object_t xpc;
-  cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 );
+  cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 ); // no-warning
   xpc = _CFXPCCreateXPCObjectFromCFObject( cf );
   CFRelease(cf);
   xpc_release(xpc);
@@ -1704,7 +1702,7 @@
 void rdar_10824732() {
   @autoreleasepool {
     NSString *obj = @"test";
-    RDar10824732 *foo = [[RDar10824732 alloc] initWithObj:obj];
+    RDar10824732 *foo = [[RDar10824732 alloc] initWithObj:obj]; // no-warning
     [foo release];
   }
 }
@@ -1771,17 +1769,17 @@
 void *malloc(size_t);
 struct rdar11104566 { CFStringRef myStr; };
 struct rdar11104566 test_rdar11104566() {
-  CFStringRef cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 );
+  CFStringRef cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 ); // no-warning
   struct rdar11104566 V;
   V.myStr = cf;
-  return V;
+  return V; // no-warning
 }
 
 struct rdar11104566 *test_2_rdar11104566() {
-  CFStringRef cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 );
+  CFStringRef cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 ); // no-warning
   struct rdar11104566 *V = (struct rdar11104566 *) malloc(sizeof(*V));
   V->myStr = cf;
-  return V;
+  return V; // no-warning
 }
 
 //===----------------------------------------------------------------------===//
@@ -1791,7 +1789,7 @@
 void test_objc_arrays() {
     { // CASE ONE -- OBJECT IN ARRAY CREATED DIRECTLY
         NSObject *o = [[NSObject alloc] init];
-        NSArray *a = [[NSArray alloc] initWithObjects:o, (void*)0];
+        NSArray *a = [[NSArray alloc] initWithObjects:o, (void*)0]; // expected-warning {{leak}}
         [o release];
         [a description];
         [o description];
@@ -1800,7 +1798,7 @@
     { // CASE TWO -- OBJECT IN ARRAY CREATED BY DUPING AUTORELEASED ARRAY
         NSObject *o = [[NSObject alloc] init];
         NSArray *a1 = [NSArray arrayWithObjects:o, (void*)0];
-        NSArray *a2 = [[NSArray alloc] initWithArray:a1];
+        NSArray *a2 = [[NSArray alloc] initWithArray:a1]; // expected-warning {{leak}}
         [o release];        
         [a2 description];
         [o description];
@@ -1808,7 +1806,7 @@
 
     { // CASE THREE -- OBJECT IN RETAINED @[]
         NSObject *o = [[NSObject alloc] init];
-        NSArray *a3 = [@[o] retain];
+        NSArray *a3 = [@[o] retain]; // expected-warning {{leak}}
         [o release];        
         [a3 description];
         [o description];
@@ -1816,7 +1814,7 @@
     
     { // CASE FOUR -- OBJECT IN ARRAY CREATED BY DUPING @[]
         NSObject *o = [[NSObject alloc] init];
-        NSArray *a = [[NSArray alloc] initWithArray:@[o]];
+        NSArray *a = [[NSArray alloc] initWithArray:@[o]]; // expected-warning {{leak}}
         [o release];
         
         [a description];
@@ -1825,7 +1823,7 @@
     
     { // CASE FIVE -- OBJECT IN RETAINED @{}
         NSValue *o = [[NSValue alloc] init];
-        NSDictionary *a = [@{o : o} retain];
+        NSDictionary *a = [@{o : o} retain]; // expected-warning {{leak}}
         [o release];
         
         [a description];
@@ -1834,15 +1832,15 @@
 }
 
 void test_objc_integer_literals() {
-  id value = [@1 retain];
+  id value = [@1 retain]; // expected-warning {{leak}}
   [value description];
 }
 
 void test_objc_boxed_expressions(int x, const char *y) {
-  id value = [@(x) retain];
+  id value = [@(x) retain]; // expected-warning {{leak}}
   [value description];
 
-  value = [@(y) retain];
+  value = [@(y) retain]; // expected-warning {{leak}}
   [value description];
 }
 
@@ -1857,7 +1855,7 @@
       printString = [[NSString alloc] init];
     NSLog(@"Once %@", printString);
     [printString release];
-    NSLog(@"Again: %@", printString);
+    NSLog(@"Again: %@", printString); // expected-warning {{Reference-counted object is used after it is released}}
   }
 }
 
@@ -1877,28 +1875,28 @@
 
 void testConsumeAndStopTracking() {
   id retained = [@[] retain]; // +1
-  consumeAndStopTracking(retained, ^{});
+  consumeAndStopTracking(retained, ^{}); // no-warning
 
   id doubleRetained = [[@[] retain] retain]; // +2
   consumeAndStopTracking(doubleRetained, ^{
     [doubleRetained release];
-  });
+  }); // no-warning
 
   id unretained = @[]; // +0
-  consumeAndStopTracking(unretained, ^{});
+  consumeAndStopTracking(unretained, ^{}); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
 }
 
 void testCFConsumeAndStopTracking() {
   id retained = [@[] retain]; // +1
-  CFConsumeAndStopTracking((CFTypeRef)retained, ^{});
+  CFConsumeAndStopTracking((CFTypeRef)retained, ^{}); // no-warning
 
-  id doubleRetained = [[@[] retain] retain];
+  id doubleRetained = [[@[] retain] retain]; // +2
   CFConsumeAndStopTracking((CFTypeRef)doubleRetained, ^{
     [doubleRetained release];
-  });
+  }); // no-warning
 
   id unretained = @[]; // +0
-  CFConsumeAndStopTracking((CFTypeRef)unretained, ^{});
+  CFConsumeAndStopTracking((CFTypeRef)unretained, ^{}); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
 }
 //===----------------------------------------------------------------------===//
 // Test 'pragma clang arc_cf_code_audited' support.
@@ -1910,7 +1908,7 @@
 #pragma clang arc_cf_code_audited end 
     
 void test_custom_cf() {
-  MyCFType x = CreateMyCFType();
+  MyCFType x = CreateMyCFType(); // expected-warning {{leak of an object stored into 'x'}}
 }
 
 //===----------------------------------------------------------------------===//
@@ -1919,1171 +1917,5 @@
 //===----------------------------------------------------------------------===//
 
 void test_CFPlugInInstanceCreate(CFUUIDRef factoryUUID, CFUUIDRef typeUUID) {
-  CFPlugInInstanceCreate(kCFAllocatorDefault, factoryUUID, typeUUID);
+  CFPlugInInstanceCreate(kCFAllocatorDefault, factoryUUID, typeUUID); // no-warning
 }
-
-// CHECK: 934:3: warning: 'IOServiceAddNotification' is deprecated
-// CHECK:   IOServiceAddNotification(masterPort, notificationType, matching,
-// CHECK:   ^
-// CHECK: 204:15: note: 'IOServiceAddNotification' declared here
-// CHECK: kern_return_t IOServiceAddNotification(  mach_port_t masterPort,  const io_name_t notificationType,  CFDictionaryRef matching,  mach_port_t wakePort,  uintptr_t reference,  io_iterator_t * notification ) __attribute__((deprecated)); // expected-note {{'IOServiceAddNotification' declared here}}
-// CHECK:               ^
-// CHECK: 1277:3: warning: class method '+drain' not found (return type defaults to 'id')
-// CHECK:   [NSAutoreleasePool drain];
-// CHECK:   ^                  ~~~~~
-// CHECK: 1294:1: warning: 'ns_returns_retained' attribute only applies to methods that return an Objective-C object
-// CHECK: - (int) returnsAnOwnedInt NS_RETURNS_RETAINED;
-// CHECK: ^                         ~~~~~~~~~~~~~~~~~~~
-// CHECK: 1300:1: warning: 'ns_returns_retained' attribute only applies to functions and methods
-// CHECK: static int ownership_attribute_doesnt_go_here NS_RETURNS_RETAINED;
-// CHECK: ^                                             ~~~~~~~~~~~~~~~~~~~
-// CHECK: 324:7: warning: Reference-counted object is used after it is released
-// CHECK:   t = CFDateGetAbsoluteTime(date);
-// CHECK:       ^                     ~~~~
-// CHECK: 335:7: warning: Reference-counted object is used after it is released
-// CHECK:   t = CFDateGetAbsoluteTime(date);
-// CHECK:       ^                     ~~~~
-// CHECK: 366:20: warning: Potential leak of an object stored into 'date'
-// CHECK:   CFDateRef date = CFDateCreate(0, t);
-// CHECK:                    ^
-// CHECK: 377:20: warning: Potential leak of an object stored into 'date'
-// CHECK:   CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-// CHECK:                    ^
-// CHECK: 385:20: warning: Potential leak of an object stored into 'date'
-// CHECK:   CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());  //expected-warning{{leak}}
-// CHECK:                    ^
-// CHECK: 387:10: warning: Potential leak of an object stored into 'date'
-// CHECK:   date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-// CHECK:          ^
-// CHECK: 396:20: warning: Potential leak of an object stored into 'date'
-// CHECK:   CFDateRef date = MyDateCreate();
-// CHECK:                    ^
-// CHECK: 405:17: warning: Dereference of null pointer (loaded from variable 'p')
-// CHECK:   if (!date) *p = 1;
-// CHECK:               ~ ^
-// CHECK: 414:20: warning: Potential leak of an object stored into 'disk'
-// CHECK:   DADiskRef disk = DADiskCreateFromBSDName(kCFAllocatorDefault, 0, "hello");
-// CHECK:                    ^
-// CHECK: 417:10: warning: Potential leak of an object stored into 'disk'
-// CHECK:   disk = DADiskCreateFromIOMedia(kCFAllocatorDefault, 0, media);
-// CHECK:          ^
-// CHECK: 420:26: warning: Potential leak of an object stored into 'dict'
-// CHECK:   CFDictionaryRef dict = DADiskCopyDescription(d);
-// CHECK:                          ^
-// CHECK: 423:10: warning: Potential leak of an object stored into 'disk'
-// CHECK:   disk = DADiskCopyWholeDisk(d);
-// CHECK:          ^
-// CHECK: 426:30: warning: Potential leak of an object stored into 'dissenter'
-// CHECK:   DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault,
-// CHECK:                              ^
-// CHECK: 430:26: warning: Potential leak of an object stored into 'session'
-// CHECK:   DASessionRef session = DASessionCreate(kCFAllocatorDefault);
-// CHECK:                          ^
-// CHECK: 456:3: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   CFRelease(s1);
-// CHECK:   ^         ~~
-// CHECK: 464:17: warning: Potential leak of an object stored into 'o'
-// CHECK:   CFTypeRef o = MyCreateFun();
-// CHECK:                 ^
-// CHECK: 475:3: warning: Object sent -autorelease too many times
-// CHECK:   [(id) A autorelease];
-// CHECK:   ^~~~~~~~~~~~~~~~~~~~
-// CHECK: 482:3: warning: Object sent -autorelease too many times
-// CHECK:   return A;
-// CHECK:   ^
-// CHECK: 489:25: warning: Object sent -autorelease too many times
-// CHECK:   CFMutableArrayRef B = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// CHECK: 497:3: warning: Potential leak of an object
-// CHECK:   CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:   ^
-// CHECK: 516:5: warning: Null pointer argument in call to CFRelease
-// CHECK:     CFRelease(p);
-// CHECK:     ^         ~
-// CHECK: 519:5: warning: Null pointer argument in call to CFRetain
-// CHECK:     CFRetain(p);
-// CHECK:     ^        ~
-// CHECK: 561:3: warning: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected
-// CHECK:   return s;
-// CHECK:   ^
-// CHECK: 574:20: warning: Potential leak of an object stored into 'kind'
-// CHECK:   NSString *kind = [[NSString alloc] initWithUTF8String:inkind];
-// CHECK:                    ^
-// CHECK: 596:13: warning: Array access (from variable 'kindC') results in a null pointer dereference
-// CHECK:   if(!isFoo(kindC[0]))
-// CHECK:             ^~~~~
-// CHECK: 602:3: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   [name release];
-// CHECK:   ^~~~~
-// CHECK: 626:3: warning: Reference-counted object is used after it is released
-// CHECK:   [foo release];
-// CHECK:   ^~~~
-// CHECK: 635:3: warning: Reference-counted object is used after it is released
-// CHECK:   [foo dealloc];
-// CHECK:   ^~~~
-// CHECK: 687:31: warning: Potential leak of an object stored into 'dict'
-// CHECK:  NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain];
-// CHECK:                               ^
-// CHECK: 699:31: warning: Potential leak of an object stored into 'dict'
-// CHECK:  NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain];
-// CHECK:                               ^
-// CHECK: 712:3: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   [array release];
-// CHECK:   ^~~~~~
-// CHECK: 788:3: warning: Potential leak of an object
-// CHECK:   [[RDar6320065Subclass alloc] init];
-// CHECK:   ^
-// CHECK: 794:3: warning: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected
-// CHECK:   return [self autorelease];
-// CHECK:   ^
-// CHECK: 832:37: warning: Potential leak of an object
-// CHECK: - (NSString*) NoCopyString { return [[NSString alloc] init]; }
-// CHECK:                                     ^
-// CHECK: 833:37: warning: Potential leak of an object
-// CHECK: - (NSString*) noCopyString { return [[NSString alloc] init]; }
-// CHECK:                                     ^
-// CHECK: 837:3: warning: Potential leak of an object
-// CHECK:   [x NoCopyString];
-// CHECK:   ^
-// CHECK: 838:3: warning: Potential leak of an object
-// CHECK:   [x noCopyString];
-// CHECK:   ^
-// CHECK: 865:10: warning: Potential leak of an object
-// CHECK:   return [[NSString alloc] init];
-// CHECK:          ^
-// CHECK: 895:3: warning: Potential leak of an object
-// CHECK:   [view createSnapshotImageOfType:str];
-// CHECK:   ^
-// CHECK: 896:3: warning: Potential leak of an object
-// CHECK:   [renderer createSnapshotImageOfType:str];
-// CHECK:   ^
-// CHECK: 897:3: warning: Potential leak of an object
-// CHECK:   [context createCGImage:img fromRect:rect];
-// CHECK:   ^
-// CHECK: 898:3: warning: Potential leak of an object
-// CHECK:   [context createCGImage:img fromRect:rect format:form colorSpace:cs];
-// CHECK:   ^
-// CHECK: 907:3: warning: Potential leak of an object
-// CHECK:   [context createCGLayerWithSize:size info:d];
-// CHECK:   ^
-// CHECK: 916:3: warning: Potential leak of an object
-// CHECK:   IOBSDNameMatching(masterPort, options, bsdName);
-// CHECK:   ^
-// CHECK: 920:3: warning: Potential leak of an object
-// CHECK:   IOServiceMatching(name);
-// CHECK:   ^
-// CHECK: 924:3: warning: Potential leak of an object
-// CHECK:   IOServiceNameMatching(name);
-// CHECK:   ^
-// CHECK: 934:3: warning: Reference-counted object is used after it is released
-// CHECK:   IOServiceAddNotification(masterPort, notificationType, matching,
-// CHECK:   ^                                                      ~~~~~~~~
-// CHECK: 939:3: warning: Potential leak of an object
-// CHECK:   IORegistryEntryIDMatching(entryID);
-// CHECK:   ^
-// CHECK: 944:3: warning: Potential leak of an object
-// CHECK:   IOOpenFirmwarePathMatching(masterPort, options, path);
-// CHECK:   ^
-// CHECK: 950:3: warning: Reference-counted object is used after it is released
-// CHECK:   CFRelease(matching);
-// CHECK:   ^         ~~~~~~~~
-// CHECK: 956:3: warning: Reference-counted object is used after it is released
-// CHECK:   CFRelease(matching);
-// CHECK:   ^         ~~~~~~~~
-// CHECK: 964:3: warning: Reference-counted object is used after it is released
-// CHECK:   CFRelease(matching);
-// CHECK:   ^         ~~~~~~~~
-// CHECK: 1005:22: warning: Potential leak of an object stored into 'number'
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1030:41: warning: Potential leak of an object
-// CHECK:     CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(),
-// CHECK:                                         ^
-// CHECK: 1052:4: warning: Potential leak of an object stored into 'myGradient'
-// CHECK:    CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), components, locations, num_locations);
-// CHECK:    ^
-// CHECK: 1052:40: warning: Potential leak of an object
-// CHECK:    CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), components, locations, num_locations);
-// CHECK:                                        ^
-// CHECK: 1090:22: warning: Potential leak of an object stored into 'number'
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1225:3: warning: Potential leak of an object
-// CHECK:   CGBitmapContextCreateWithData(data, width, height, bitsPerComponent,
-// CHECK:   ^
-// CHECK: 1243:10: warning: Potential leak of an object stored into 'y'
-// CHECK:   id y = [x new_stuff];
-// CHECK:          ^
-// CHECK: 1264:22: warning: Potential leak of an object stored into 'number'
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1274:3: warning: The 'release' message should be sent to instances of class 'RDar7252064' and not the class directly
-// CHECK:   [RDar7252064 release];
-// CHECK:   ^~~~~~~~~~~~~~~~~~~~~
-// CHECK: 1275:3: warning: The 'retain' message should be sent to instances of class 'RDar7252064' and not the class directly
-// CHECK:   [RDar7252064 retain];
-// CHECK:   ^~~~~~~~~~~~~~~~~~~~
-// CHECK: 1276:3: warning: The 'autorelease' message should be sent to instances of class 'RDar7252064' and not the class directly
-// CHECK:   [RDar7252064 autorelease];
-// CHECK:   ^~~~~~~~~~~~~~~~~~~~~~~~~
-// CHECK: 1277:3: warning: The 'drain' message should be sent to instances of class 'NSAutoreleasePool' and not the class directly
-// CHECK:   [NSAutoreleasePool drain];
-// CHECK:   ^~~~~~~~~~~~~~~~~~~~~~~~~
-// CHECK: 1303:19: warning: Potential leak of an object stored into 'str'
-// CHECK:   NSString *str = [X returnsAnOwnedString];
-// CHECK:                   ^
-// CHECK: 1307:19: warning: Potential leak of an object stored into 'str'
-// CHECK:   NSString *str = [X returnsAnOwnedCFString];
-// CHECK:                   ^
-// CHECK: 1312:20: warning: Potential leak of an object stored into 'str2'
-// CHECK:   NSString *str2 = [X newStringNoAttr];
-// CHECK:                    ^
-// CHECK: 1316:26: warning: Potential leak of an object stored into 'x'
-// CHECK:   TestOwnershipAttr *x = [TestOwnershipAttr alloc];
-// CHECK:                          ^
-// CHECK: 1320:26: warning: Potential leak of an object stored into 'x'
-// CHECK:   TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];
-// CHECK:                          ^
-// CHECK: 1324:26: warning: Potential leak of an object stored into 'x'
-// CHECK:   TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];// expected-warning{{leak}}
-// CHECK:                          ^
-// CHECK: 1356:10: warning: Potential leak of an object
-// CHECK:   return [NSString alloc];
-// CHECK:          ^
-// CHECK: 1389:3: warning: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected
-// CHECK:   return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease];
-// CHECK:   ^
-// CHECK: 1393:20: warning: Potential leak of an object
-// CHECK:   return (NSDate*) returnsRetainedCFDate();
-// CHECK:                    ^
-// CHECK: 1397:10: warning: Potential leak of an object
-// CHECK:   return returnsRetainedCFDate();
-// CHECK:          ^
-// CHECK: 1418:23: warning: Potential leak of an object stored into 'value'
-// CHECK:   CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
-// CHECK:                       ^
-// CHECK: 1429:23: warning: Potential leak of an object stored into 'value'
-// CHECK:   CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
-// CHECK:                       ^
-// CHECK: 1452:22: warning: Potential leak of an object stored into 'number'
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1473:22: warning: Potential leak of an object stored into 'number'
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1531:16: warning: Potential leak of an object stored into 'info'
-// CHECK:         info = CFErrorCopyUserInfo(error_to_dump);
-// CHECK:                ^
-// CHECK: 1581:10: warning: Potential leak of an object
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:          ^
-// CHECK: 1589:10: warning: Potential leak of an object
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:          ^
-// CHECK: 1610:10: warning: Potential leak of an object
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:          ^
-// CHECK: 1622:10: warning: Potential leak of an object
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:          ^
-// CHECK: 1643:24: warning: Potential leak of an object stored into 'vals'
-// CHECK:   CFTypeRef vals[] = { CFDateCreate(0, t) };
-// CHECK:                        ^
-// CHECK: 1673:27: warning: Reference-counted object is used after it is released
-// CHECK:   NSString *otherString = [string stringByAppendingString:@"bar"];
-// CHECK:                           ^~~~~~~
-// CHECK: 1794:22: warning: Potential leak of an object stored into 'a'
-// CHECK:         NSArray *a = [[NSArray alloc] initWithObjects:o, (void*)0];
-// CHECK:                      ^
-// CHECK: 1803:23: warning: Potential leak of an object stored into 'a2'
-// CHECK:         NSArray *a2 = [[NSArray alloc] initWithArray:a1];
-// CHECK:                       ^
-// CHECK: 1811:24: warning: Potential leak of an object stored into 'a3'
-// CHECK:         NSArray *a3 = [@[o] retain];
-// CHECK:                        ^
-// CHECK: 1819:22: warning: Potential leak of an object stored into 'a'
-// CHECK:         NSArray *a = [[NSArray alloc] initWithArray:@[o]];
-// CHECK:                      ^
-// CHECK: 1828:28: warning: Potential leak of an object stored into 'a'
-// CHECK:         NSDictionary *a = [@{o : o} retain];
-// CHECK:                            ^
-// CHECK: 1837:15: warning: Potential leak of an object stored into 'value'
-// CHECK:   id value = [@1 retain];
-// CHECK:               ^
-// CHECK: 1842:15: warning: Potential leak of an object stored into 'value'
-// CHECK:   id value = [@(x) retain];
-// CHECK:               ^
-// CHECK: 1845:12: warning: Potential leak of an object stored into 'value'
-// CHECK:   value = [@(y) retain];
-// CHECK:            ^
-// CHECK: 1860:5: warning: Reference-counted object is used after it is released
-// CHECK:     NSLog(@"Again: %@", printString);
-// CHECK:     ^                   ~~~~~~~~~~~
-// CHECK: 1888:3: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   consumeAndStopTracking(unretained, ^{});
-// CHECK:   ^                      ~~~~~~~~~~
-// CHECK: 1901:3: warning: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   CFConsumeAndStopTracking((CFTypeRef)unretained, ^{});
-// CHECK:   ^                        ~~~~~~~~~~~~~~~~~~~~~
-// CHECK: 1913:16: warning: Potential leak of an object stored into 'x'
-// CHECK:   MyCFType x = CreateMyCFType();
-// CHECK:                ^
-// CHECK: 319:20: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDateRef date = CFDateCreate(0, t);
-// CHECK:                    ^
-// CHECK: 320:3: note: Reference count incremented. The object now has a +2 retain count
-// CHECK:   CFRetain(date);
-// CHECK:   ^
-// CHECK: 321:3: note: Reference count decremented. The object now has a +1 retain count
-// CHECK:   CFRelease(date);
-// CHECK:   ^
-// CHECK: 323:3: note: Object released
-// CHECK:   CFRelease(date);
-// CHECK:   ^
-// CHECK: 324:7: note: Reference-counted object is used after it is released
-// CHECK:   t = CFDateGetAbsoluteTime(date);
-// CHECK:       ^
-// CHECK: 330:20: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDateRef date = CFDateCreate(0, t);  
-// CHECK:                    ^
-// CHECK: 331:3: note: Reference count incremented. The object now has a +2 retain count
-// CHECK:   [((NSDate*) date) retain];
-// CHECK:   ^
-// CHECK: 332:3: note: Reference count decremented. The object now has a +1 retain count
-// CHECK:   CFRelease(date);
-// CHECK:   ^
-// CHECK: 334:3: note: Object released
-// CHECK:   [((NSDate*) date) release];
-// CHECK:   ^
-// CHECK: 335:7: note: Reference-counted object is used after it is released
-// CHECK:   t = CFDateGetAbsoluteTime(date);
-// CHECK:       ^
-// CHECK: 366:20: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDateRef date = CFDateCreate(0, t);
-// CHECK:                    ^
-// CHECK: 368:3: note: Taking false branch
-// CHECK:   if (x)
-// CHECK:   ^
-// CHECK: 371:10: note: Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +1
-// CHECK:   return t;
-// CHECK:          ^
-// CHECK: 377:20: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-// CHECK:                    ^
-// CHECK: 378:3: note: Reference count incremented. The object now has a +2 retain count
-// CHECK:   CFRetain(date);
-// CHECK:   ^
-// CHECK: 379:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return date;
-// CHECK:   ^
-// CHECK: 380:1: note: Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 385:20: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());  //expected-warning{{leak}}
-// CHECK:                    ^
-// CHECK: 386:3: note: Reference count incremented. The object now has a +2 retain count
-// CHECK:   CFRetain(date);
-// CHECK:   ^
-// CHECK: 388:3: note: Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +2
-// CHECK:   return date;
-// CHECK:   ^
-// CHECK: 387:10: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-// CHECK:          ^
-// CHECK: 388:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return date;
-// CHECK:   ^
-// CHECK: 388:3: note: Object leaked: object allocated and stored into 'date' is returned from a function whose name ('f7') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation
-// CHECK: 396:20: note: Call to function 'MyDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDateRef date = MyDateCreate();
-// CHECK:                    ^
-// CHECK: 397:3: note: Reference count incremented. The object now has a +2 retain count
-// CHECK:   CFRetain(date);  
-// CHECK:   ^
-// CHECK: 398:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return date;
-// CHECK:   ^
-// CHECK: 399:1: note: Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 403:3: note: Variable 'p' initialized to a null pointer value
-// CHECK:   int *p = 0;
-// CHECK:   ^
-// CHECK: 405:3: note: Taking true branch
-// CHECK:   if (!date) *p = 1;
-// CHECK:   ^
-// CHECK: 405:14: note: Dereference of null pointer (loaded from variable 'p')
-// CHECK:   if (!date) *p = 1;
-// CHECK:              ^
-// CHECK: 415:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 418:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 420:26: note: Call to function 'DADiskCopyDescription' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDictionaryRef dict = DADiskCopyDescription(d);
-// CHECK:                          ^
-// CHECK: 421:7: note: Assuming 'dict' is non-null
-// CHECK:   if (dict) NSLog(@"ok"); 
-// CHECK:       ^
-// CHECK: 421:3: note: Taking true branch
-// CHECK:   if (dict) NSLog(@"ok"); 
-// CHECK:   ^
-// CHECK: 421:20: note: Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1
-// CHECK:   if (dict) NSLog(@"ok"); 
-// CHECK:                    ^
-// CHECK: 415:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 418:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 421:3: note: Taking false branch
-// CHECK:   if (dict) NSLog(@"ok"); 
-// CHECK:   ^
-// CHECK: 423:10: note: Call to function 'DADiskCopyWholeDisk' returns a Core Foundation object with a +1 retain count
-// CHECK:   disk = DADiskCopyWholeDisk(d);
-// CHECK:          ^
-// CHECK: 424:7: note: Assuming 'disk' is non-null
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:       ^
-// CHECK: 424:3: note: Taking true branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 424:20: note: Object leaked: object allocated and stored into 'disk' is not referenced later in this execution path and has a retain count of +1
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:                    ^
-// CHECK: 415:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 418:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 421:3: note: Taking false branch
-// CHECK:   if (dict) NSLog(@"ok"); 
-// CHECK:   ^
-// CHECK: 424:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 426:30: note: Call to function 'DADissenterCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault,
-// CHECK:                              ^
-// CHECK: 428:7: note: Assuming 'dissenter' is non-null
-// CHECK:   if (dissenter) NSLog(@"ok");
-// CHECK:       ^
-// CHECK: 428:3: note: Taking true branch
-// CHECK:   if (dissenter) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 428:25: note: Object leaked: object allocated and stored into 'dissenter' is not referenced later in this execution path and has a retain count of +1
-// CHECK:   if (dissenter) NSLog(@"ok");
-// CHECK:                         ^
-// CHECK: 415:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 418:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 421:3: note: Taking false branch
-// CHECK:   if (dict) NSLog(@"ok"); 
-// CHECK:   ^
-// CHECK: 424:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 428:3: note: Taking false branch
-// CHECK:   if (dissenter) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 430:26: note: Call to function 'DASessionCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   DASessionRef session = DASessionCreate(kCFAllocatorDefault);
-// CHECK:                          ^
-// CHECK: 431:7: note: Assuming 'session' is non-null
-// CHECK:   if (session) NSLog(@"ok");
-// CHECK:       ^
-// CHECK: 431:3: note: Taking true branch
-// CHECK:   if (session) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 431:23: note: Object leaked: object allocated and stored into 'session' is not referenced later in this execution path and has a retain count of +1
-// CHECK:   if (session) NSLog(@"ok");
-// CHECK:                       ^
-// CHECK: 415:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 417:10: note: Call to function 'DADiskCreateFromIOMedia' returns a Core Foundation object with a +1 retain count
-// CHECK:   disk = DADiskCreateFromIOMedia(kCFAllocatorDefault, 0, media);
-// CHECK:          ^
-// CHECK: 418:7: note: Assuming 'disk' is non-null
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:       ^
-// CHECK: 418:3: note: Taking true branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 421:3: note: Taking false branch
-// CHECK:   if (dict) NSLog(@"ok"); 
-// CHECK:   ^
-// CHECK: 424:3: note: Taking false branch
-// CHECK:   if (disk) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 428:3: note: Taking false branch
-// CHECK:   if (dissenter) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 431:3: note: Taking false branch
-// CHECK:   if (session) NSLog(@"ok");
-// CHECK:   ^
-// CHECK: 432:1: note: Object leaked: object allocated and stored into 'disk' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 450:22: note: Call to function 'CFArrayGetValueAtIndex' returns a Core Foundation object with a +0 retain count
-// CHECK:   s1 = (CFStringRef) CFArrayGetValueAtIndex(A, 0);
-// CHECK:                      ^
-// CHECK: 456:3: note: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   CFRelease(s1);
-// CHECK:   ^
-// CHECK: 464:17: note: Call to function 'MyCreateFun' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFTypeRef o = MyCreateFun();
-// CHECK:                 ^
-// CHECK: 465:1: note: Object leaked: object allocated and stored into 'o' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 473:25: note: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:                         ^
-// CHECK: 474:3: note: Object sent -autorelease message
-// CHECK:   [(id) A autorelease];
-// CHECK:   ^
-// CHECK: 475:3: note: Object sent -autorelease message
-// CHECK:   [(id) A autorelease];
-// CHECK:   ^
-// CHECK: 476:1: note: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +1 retain count
-// CHECK: }
-// CHECK: ^
-// CHECK: 479:25: note: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:                         ^
-// CHECK: 480:3: note: Object sent -autorelease message
-// CHECK:   [(id) A autorelease];
-// CHECK:   ^
-// CHECK: 481:3: note: Object sent -autorelease message
-// CHECK:   [(id) A autorelease]; 
-// CHECK:   ^
-// CHECK: 482:3: note: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +0 retain count
-// CHECK:   return A;
-// CHECK:   ^
-// CHECK: 486:25: note: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:                         ^
-// CHECK: 487:3: note: Object sent -autorelease message
-// CHECK:   [(id) A autorelease];
-// CHECK:   ^
-// CHECK: 488:3: note: Object sent -autorelease message
-// CHECK:   [(id) A autorelease]; 
-// CHECK:   ^
-// CHECK: 489:25: note: Object over-autoreleased: object was sent -autorelease 2 times but the object has a +1 retain count
-// CHECK:   CFMutableArrayRef B = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:                         ^
-// CHECK: 497:3: note: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:   ^
-// CHECK: 498:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 512:7: note: Assuming 'p' is null
-// CHECK:   if (p)
-// CHECK:       ^
-// CHECK: 512:7: note: Assuming pointer value is null
-// CHECK: 512:3: note: Taking false branch
-// CHECK:   if (p)
-// CHECK:   ^
-// CHECK: 515:3: note: Taking true branch
-// CHECK:   if (x) {
-// CHECK:   ^
-// CHECK: 516:5: note: Null pointer argument in call to CFRelease
-// CHECK:     CFRelease(p);
-// CHECK:     ^
-// CHECK: 512:7: note: Assuming 'p' is null
-// CHECK:   if (p)
-// CHECK:       ^
-// CHECK: 512:7: note: Assuming pointer value is null
-// CHECK: 512:3: note: Taking false branch
-// CHECK:   if (p)
-// CHECK:   ^
-// CHECK: 515:3: note: Taking false branch
-// CHECK:   if (x) {
-// CHECK:   ^
-// CHECK: 519:5: note: Null pointer argument in call to CFRetain
-// CHECK:     CFRetain(p);
-// CHECK:     ^
-// CHECK: 560:17: note: Method returns an Objective-C object with a +0 retain count
-// CHECK:   NSString *s = [NSString stringWithUTF8String:"hello"];
-// CHECK:                 ^
-// CHECK: 561:3: note: Object returned to caller with a +0 retain count
-// CHECK:   return s;
-// CHECK:   ^
-// CHECK: 561:3: note: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected
-// CHECK: 574:20: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   NSString *kind = [[NSString alloc] initWithUTF8String:inkind];
-// CHECK:                    ^
-// CHECK: 581:3: note: Taking true branch
-// CHECK:   if(!name)
-// CHECK:   ^
-// CHECK: 582:5: note: Object leaked: object allocated and stored into 'kind' is not referenced later in this execution path and has a retain count of +1
-// CHECK:     return;
-// CHECK:     ^
-// CHECK: 581:3: note: Taking false branch
-// CHECK:   if(!name)
-// CHECK:   ^
-// CHECK: 584:3: note: Variable 'kindC' initialized to a null pointer value
-// CHECK:   const char *kindC = 0;
-// CHECK:   ^
-// CHECK: 592:3: note: Taking false branch
-// CHECK:   if(kind)
-// CHECK:   ^
-// CHECK: 594:3: note: Taking true branch
-// CHECK:   if(name)
-// CHECK:   ^
-// CHECK: 596:13: note: Array access (from variable 'kindC') results in a null pointer dereference
-// CHECK:   if(!isFoo(kindC[0]))
-// CHECK:             ^
-// CHECK: 580:20: note: Method returns an Objective-C object with a +0 retain count
-// CHECK:   NSString *name = [NSString stringWithUTF8String:inname];
-// CHECK:                    ^
-// CHECK: 581:6: note: Assuming 'name' is non-nil
-// CHECK:   if(!name)
-// CHECK:      ^
-// CHECK: 581:3: note: Taking false branch
-// CHECK:   if(!name)
-// CHECK:   ^
-// CHECK: 592:3: note: Taking true branch
-// CHECK:   if(kind)
-// CHECK:   ^
-// CHECK: 594:3: note: Taking true branch
-// CHECK:   if(name)
-// CHECK:   ^
-// CHECK: 596:3: note: Taking false branch
-// CHECK:   if(!isFoo(kindC[0]))
-// CHECK:   ^
-// CHECK: 598:3: note: Taking false branch
-// CHECK:   if(!isFoo(nameC[0]))
-// CHECK:   ^
-// CHECK: 602:3: note: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   [name release];
-// CHECK:   ^
-// CHECK: 624:12: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   id foo = [[NSString alloc] init];
-// CHECK:            ^
-// CHECK: 625:3: note: Object released by directly sending the '-dealloc' message
-// CHECK:   [foo dealloc];
-// CHECK:   ^
-// CHECK: 626:3: note: Reference-counted object is used after it is released
-// CHECK:   [foo release];
-// CHECK:   ^
-// CHECK: 633:12: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   id foo = [[NSString alloc] init];
-// CHECK:            ^
-// CHECK: 634:3: note: Object released
-// CHECK:   [foo release];
-// CHECK:   ^
-// CHECK: 635:3: note: Reference-counted object is used after it is released
-// CHECK:   [foo dealloc];
-// CHECK:   ^
-// CHECK: 687:31: note: Method returns an Objective-C object with a +0 retain count
-// CHECK:  NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain];
-// CHECK:                               ^
-// CHECK: 687:30: note: Reference count incremented. The object now has a +1 retain count
-// CHECK:  NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain];
-// CHECK:                              ^
-// CHECK: 692:1: note: Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 699:31: note: Method returns an Objective-C object with a +0 retain count
-// CHECK:  NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain];
-// CHECK:                               ^
-// CHECK: 699:30: note: Reference count incremented. The object now has a +1 retain count
-// CHECK:  NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain];
-// CHECK:                              ^
-// CHECK: 700:2: note: Taking false branch
-// CHECK:  if (window) 
-// CHECK:  ^
-// CHECK: 702:1: note: Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 711:20: note: Method returns an Objective-C object with a +0 retain count
-// CHECK:   NSArray *array = [NSArray array];
-// CHECK:                    ^
-// CHECK: 712:3: note: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   [array release];
-// CHECK:   ^
-// CHECK: 788:3: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   [[RDar6320065Subclass alloc] init];
-// CHECK:   ^
-// CHECK: 790:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 793:10: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   self = [[RDar6320065Subclass alloc] init];
-// CHECK:          ^
-// CHECK: 794:10: note: Object sent -autorelease message
-// CHECK:   return [self autorelease];
-// CHECK:          ^
-// CHECK: 794:3: note: Object returned to caller with a +0 retain count
-// CHECK:   return [self autorelease];
-// CHECK:   ^
-// CHECK: 794:3: note: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected
-// CHECK: 832:37: note: Method returns an Objective-C object with a +1 retain count
-// CHECK: - (NSString*) NoCopyString { return [[NSString alloc] init]; }
-// CHECK:                                     ^
-// CHECK: 832:30: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK: - (NSString*) NoCopyString { return [[NSString alloc] init]; }
-// CHECK:                              ^
-// CHECK: 832:30: note: Object leaked: allocated object is returned from a method whose name ('NoCopyString') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa
-// CHECK: 833:37: note: Method returns an Objective-C object with a +1 retain count
-// CHECK: - (NSString*) noCopyString { return [[NSString alloc] init]; }
-// CHECK:                                     ^
-// CHECK: 833:30: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK: - (NSString*) noCopyString { return [[NSString alloc] init]; }
-// CHECK:                              ^
-// CHECK: 833:30: note: Object leaked: allocated object is returned from a method whose name ('noCopyString') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa
-// CHECK: 837:3: note: Calling 'NoCopyString'
-// CHECK:   [x NoCopyString];
-// CHECK:   ^
-// CHECK: 832:37: note: Method returns an Objective-C object with a +1 retain count
-// CHECK: - (NSString*) NoCopyString { return [[NSString alloc] init]; }
-// CHECK:                                     ^
-// CHECK: 837:3: note: Returning from 'NoCopyString'
-// CHECK:   [x NoCopyString];
-// CHECK:   ^
-// CHECK: 841:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 865:10: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   return [[NSString alloc] init];
-// CHECK:          ^
-// CHECK: 865:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return [[NSString alloc] init];
-// CHECK:   ^
-// CHECK: 865:3: note: Object leaked: allocated object is returned from a method whose name (':') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa
-// CHECK: 895:3: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   [view createSnapshotImageOfType:str];
-// CHECK:   ^
-// CHECK: 899:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 907:3: note: Method returns a Core Foundation object with a +1 retain count
-// CHECK:   [context createCGLayerWithSize:size info:d];
-// CHECK:   ^
-// CHECK: 908:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 916:3: note: Call to function 'IOBSDNameMatching' returns a Core Foundation object with a +1 retain count
-// CHECK:   IOBSDNameMatching(masterPort, options, bsdName);
-// CHECK:   ^
-// CHECK: 917:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 920:3: note: Call to function 'IOServiceMatching' returns a Core Foundation object with a +1 retain count
-// CHECK:   IOServiceMatching(name);
-// CHECK:   ^
-// CHECK: 921:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 924:3: note: Call to function 'IOServiceNameMatching' returns a Core Foundation object with a +1 retain count
-// CHECK:   IOServiceNameMatching(name);
-// CHECK:   ^
-// CHECK: 925:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 932:30: note: Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDictionaryRef matching = CreateDict();
-// CHECK:                              ^
-// CHECK: 933:3: note: Object released
-// CHECK:   CFRelease(matching);
-// CHECK:   ^
-// CHECK: 934:3: note: Reference-counted object is used after it is released
-// CHECK:   IOServiceAddNotification(masterPort, notificationType, matching,
-// CHECK:   ^
-// CHECK: 939:3: note: Call to function 'IORegistryEntryIDMatching' returns a Core Foundation object with a +1 retain count
-// CHECK:   IORegistryEntryIDMatching(entryID);
-// CHECK:   ^
-// CHECK: 940:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 944:3: note: Call to function 'IOOpenFirmwarePathMatching' returns a Core Foundation object with a +1 retain count
-// CHECK:   IOOpenFirmwarePathMatching(masterPort, options, path);
-// CHECK:   ^
-// CHECK: 945:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 948:30: note: Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDictionaryRef matching = CreateDict();
-// CHECK:                              ^
-// CHECK: 949:3: note: Object released
-// CHECK:   IOServiceGetMatchingService(masterPort, matching);
-// CHECK:   ^
-// CHECK: 950:3: note: Reference-counted object is used after it is released
-// CHECK:   CFRelease(matching);
-// CHECK:   ^
-// CHECK: 954:30: note: Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDictionaryRef matching = CreateDict();
-// CHECK:                              ^
-// CHECK: 955:3: note: Object released
-// CHECK:   IOServiceGetMatchingServices(masterPort, matching, existing);
-// CHECK:   ^
-// CHECK: 956:3: note: Reference-counted object is used after it is released
-// CHECK:   CFRelease(matching);
-// CHECK:   ^
-// CHECK: 962:30: note: Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFDictionaryRef matching = CreateDict();
-// CHECK:                              ^
-// CHECK: 963:3: note: Object released
-// CHECK:   IOServiceAddMatchingNotification(notifyPort, notificationType, matching, callback, refCon, notification);
-// CHECK:   ^
-// CHECK: 964:3: note: Reference-counted object is used after it is released
-// CHECK:   CFRelease(matching);
-// CHECK:   ^
-// CHECK: 1005:22: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1007:3: note: Reference count decremented
-// CHECK:   [number release];
-// CHECK:   ^
-// CHECK: 1008:3: note: Reference count incremented. The object now has a +1 retain count
-// CHECK:   [number retain];
-// CHECK:   ^
-// CHECK: 1009:3: note: Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1
-// CHECK:   CFRelease(attrString);  
-// CHECK:   ^
-// CHECK: 1030:41: note: Call to function 'CGColorSpaceCreateDeviceRGB' returns a Core Foundation object with a +1 retain count
-// CHECK:     CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(),
-// CHECK:                                         ^
-// CHECK: 1029:3: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK:   CGGradientRef myGradient =
-// CHECK:   ^
-// CHECK: 1052:40: note: Call to function 'CGColorSpaceCreateDeviceRGB' returns a Core Foundation object with a +1 retain count
-// CHECK:    CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), components, locations, num_locations);
-// CHECK:                                        ^
-// CHECK: 1051:3: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK:   CGGradientRef myGradient =
-// CHECK:   ^
-// CHECK: 1052:4: note: Call to function 'CGGradientCreateWithColorComponents' returns a Core Foundation object with a +1 retain count
-// CHECK:    CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), components, locations, num_locations);
-// CHECK:    ^
-// CHECK: 1056:1: note: Object leaked: object allocated and stored into 'myGradient' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1090:22: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1091:1: note: Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1225:3: note: Call to function 'CGBitmapContextCreateWithData' returns a Core Foundation object with a +1 retain count
-// CHECK:   CGBitmapContextCreateWithData(data, width, height, bitsPerComponent,
-// CHECK:   ^
-// CHECK: 1227:1: note: Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1243:10: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   id y = [x new_stuff];
-// CHECK:          ^
-// CHECK: 1244:1: note: Object leaked: object allocated and stored into 'y' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1264:22: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1265:1: note: Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1274:3: note: The 'release' message should be sent to instances of class 'RDar7252064' and not the class directly
-// CHECK:   [RDar7252064 release];
-// CHECK:   ^
-// CHECK: 1275:3: note: The 'retain' message should be sent to instances of class 'RDar7252064' and not the class directly
-// CHECK:   [RDar7252064 retain];
-// CHECK:   ^
-// CHECK: 1276:3: note: The 'autorelease' message should be sent to instances of class 'RDar7252064' and not the class directly
-// CHECK:   [RDar7252064 autorelease];
-// CHECK:   ^
-// CHECK: 1277:3: note: The 'drain' message should be sent to instances of class 'NSAutoreleasePool' and not the class directly
-// CHECK:   [NSAutoreleasePool drain];
-// CHECK:   ^
-// CHECK: 1303:19: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   NSString *str = [X returnsAnOwnedString];
-// CHECK:                   ^
-// CHECK: 1304:1: note: Object leaked: object allocated and stored into 'str' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1307:19: note: Method returns a Core Foundation object with a +1 retain count
-// CHECK:   NSString *str = [X returnsAnOwnedCFString];
-// CHECK:                   ^
-// CHECK: 1308:1: note: Object leaked: object allocated and stored into 'str' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1312:20: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   NSString *str2 = [X newStringNoAttr];
-// CHECK:                    ^
-// CHECK: 1313:1: note: Object leaked: object allocated and stored into 'str2' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1316:26: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   TestOwnershipAttr *x = [TestOwnershipAttr alloc];
-// CHECK:                          ^
-// CHECK: 1317:1: note: Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1320:26: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];
-// CHECK:                          ^
-// CHECK: 1321:1: note: Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1324:26: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];// expected-warning{{leak}}
-// CHECK:                          ^
-// CHECK: 1326:1: note: Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1356:10: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   return [NSString alloc];
-// CHECK:          ^
-// CHECK: 1356:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return [NSString alloc];
-// CHECK:   ^
-// CHECK: 1356:3: note: Object leaked: allocated object is returned from a method that is annotated as NS_RETURNS_NOT_RETAINED
-// CHECK: 1389:26: note: Calling 'returnsCFRetainedAsCF'
-// CHECK:   return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease];
-// CHECK:                          ^
-// CHECK: 1381:10: note: Calling 'returnsRetainedCFDate'
-// CHECK:   return returnsRetainedCFDate(); // No leak.
-// CHECK:          ^
-// CHECK: 1372:10: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   return CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-// CHECK:          ^
-// CHECK: 1381:10: note: Returning from 'returnsRetainedCFDate'
-// CHECK:   return returnsRetainedCFDate(); // No leak.
-// CHECK:          ^
-// CHECK: 1389:26: note: Returning from 'returnsCFRetainedAsCF'
-// CHECK:   return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease];
-// CHECK:                          ^
-// CHECK: 1389:21: note: Object sent -autorelease message
-// CHECK:   return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease];
-// CHECK:                     ^
-// CHECK: 1389:3: note: Object returned to caller with a +0 retain count
-// CHECK:   return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease];
-// CHECK:   ^
-// CHECK: 1389:3: note: Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected
-// CHECK: 1393:20: note: Calling 'returnsRetainedCFDate'
-// CHECK:   return (NSDate*) returnsRetainedCFDate();
-// CHECK:                    ^
-// CHECK: 1372:10: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   return CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-// CHECK:          ^
-// CHECK: 1393:20: note: Returning from 'returnsRetainedCFDate'
-// CHECK:   return (NSDate*) returnsRetainedCFDate();
-// CHECK:                    ^
-// CHECK: 1393:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return (NSDate*) returnsRetainedCFDate();
-// CHECK:   ^
-// CHECK: 1393:3: note: Object leaked: allocated object is returned from a method whose name ('alsoReturnsRetained') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa
-// CHECK: 1397:10: note: Calling 'returnsRetainedCFDate'
-// CHECK:   return returnsRetainedCFDate();
-// CHECK:          ^
-// CHECK: 1372:10: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   return CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-// CHECK:          ^
-// CHECK: 1397:10: note: Returning from 'returnsRetainedCFDate'
-// CHECK:   return returnsRetainedCFDate();
-// CHECK:          ^
-// CHECK: 1397:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return returnsRetainedCFDate();
-// CHECK:   ^
-// CHECK: 1397:3: note: Object leaked: allocated object is returned from a method whose name ('alsoReturnsRetainedAsCF') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa
-// CHECK: 1418:23: note: Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
-// CHECK:                       ^
-// CHECK: 1419:1: note: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1429:23: note: Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
-// CHECK:                       ^
-// CHECK: 1430:3: note: Taking false branch
-// CHECK:   if (x)
-// CHECK:   ^
-// CHECK: 1432:1: note: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1452:22: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1453:3: note: Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1
-// CHECK:   ^{}();
-// CHECK:   ^
-// CHECK: 1473:22: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   NSNumber *number = [[NSNumber alloc] initWithInt:5];
-// CHECK:                      ^
-// CHECK: 1474:3: note: Calling anonymous block
-// CHECK:   ^(NSObject *o){ [o retain]; }(number);
-// CHECK:   ^
-// CHECK: 1474:19: note: Reference count incremented. The object now has a +2 retain count
-// CHECK:   ^(NSObject *o){ [o retain]; }(number);
-// CHECK:                   ^
-// CHECK: 1474:3: note: Returning to caller
-// CHECK:   ^(NSObject *o){ [o retain]; }(number);
-// CHECK:   ^
-// CHECK: 1475:1: note: Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +2
-// CHECK: }
-// CHECK: ^
-// CHECK: 1528:5: note: Loop condition is true.  Entering loop body
-// CHECK:     while (error_to_dump != ((void*)0)) {
-// CHECK:     ^
-// CHECK: 1531:16: note: Call to function 'CFErrorCopyUserInfo' returns a Core Foundation object with a +1 retain count
-// CHECK:         info = CFErrorCopyUserInfo(error_to_dump);
-// CHECK:                ^
-// CHECK: 1533:13: note: Assuming 'info' is not equal to null
-// CHECK:         if (info != ((void*)0)) {
-// CHECK:             ^
-// CHECK: 1533:9: note: Taking true branch
-// CHECK:         if (info != ((void*)0)) {
-// CHECK:         ^
-// CHECK: 1528:5: note: Loop condition is false. Execution jumps to the end of the function
-// CHECK:     while (error_to_dump != ((void*)0)) {
-// CHECK:     ^
-// CHECK: 1538:1: note: Object leaked: object allocated and stored into 'info' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1581:10: note: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:          ^
-// CHECK: 1581:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:   ^
-// CHECK: 1581:3: note: Object leaked: allocated object is returned from a function whose name ('camelcase_createno') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation
-// CHECK: 1589:10: note: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:          ^
-// CHECK: 1589:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:   ^
-// CHECK: 1589:3: note: Object leaked: allocated object is returned from a function whose name ('camelcase_copying') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation
-// CHECK: 1610:10: note: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:          ^
-// CHECK: 1610:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:   ^
-// CHECK: 1610:3: note: Object leaked: allocated object is returned from a function whose name ('camel_creat') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation
-// CHECK: 1622:10: note: Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:          ^
-// CHECK: 1622:3: note: Object returned to caller as an owning reference (single retain count transferred to caller)
-// CHECK:   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-// CHECK:   ^
-// CHECK: 1622:3: note: Object leaked: allocated object is returned from a function whose name ('camel_copymachine') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation
-// CHECK: 1643:24: note: Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count
-// CHECK:   CFTypeRef vals[] = { CFDateCreate(0, t) };
-// CHECK:                        ^
-// CHECK: 1644:1: note: Object leaked: object allocated and stored into 'vals' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1670:22: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:   NSString *string = [[NSString alloc] initWithUTF8String:"foo"];
-// CHECK:                      ^
-// CHECK: 1671:3: note: Object released
-// CHECK:   [string release];
-// CHECK:   ^
-// CHECK: 1673:27: note: Reference-counted object is used after it is released
-// CHECK:   NSString *otherString = [string stringByAppendingString:@"bar"];
-// CHECK:                           ^
-// CHECK: 1794:22: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:         NSArray *a = [[NSArray alloc] initWithObjects:o, (void*)0];
-// CHECK:                      ^
-// CHECK: 1797:9: note: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1
-// CHECK:         [o description];
-// CHECK:         ^
-// CHECK: 1803:23: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:         NSArray *a2 = [[NSArray alloc] initWithArray:a1];
-// CHECK:                       ^
-// CHECK: 1806:9: note: Object leaked: object allocated and stored into 'a2' is not referenced later in this execution path and has a retain count of +1
-// CHECK:         [o description];
-// CHECK:         ^
-// CHECK: 1811:24: note: NSArray literal is an object with a +0 retain count
-// CHECK:         NSArray *a3 = [@[o] retain];
-// CHECK:                        ^
-// CHECK: 1811:23: note: Reference count incremented. The object now has a +1 retain count
-// CHECK:         NSArray *a3 = [@[o] retain];
-// CHECK:                       ^
-// CHECK: 1814:9: note: Object leaked: object allocated and stored into 'a3' is not referenced later in this execution path and has a retain count of +1
-// CHECK:         [o description];
-// CHECK:         ^
-// CHECK: 1819:22: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:         NSArray *a = [[NSArray alloc] initWithArray:@[o]];
-// CHECK:                      ^
-// CHECK: 1823:9: note: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1
-// CHECK:         [o description];
-// CHECK:         ^
-// CHECK: 1828:28: note: NSDictionary literal is an object with a +0 retain count
-// CHECK:         NSDictionary *a = [@{o : o} retain];
-// CHECK:                            ^
-// CHECK: 1828:27: note: Reference count incremented. The object now has a +1 retain count
-// CHECK:         NSDictionary *a = [@{o : o} retain];
-// CHECK:                           ^
-// CHECK: 1832:9: note: Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1
-// CHECK:         [o description];
-// CHECK:         ^
-// CHECK: 1837:15: note: NSNumber literal is an object with a +0 retain count
-// CHECK:   id value = [@1 retain];
-// CHECK:               ^
-// CHECK: 1837:14: note: Reference count incremented. The object now has a +1 retain count
-// CHECK:   id value = [@1 retain];
-// CHECK:              ^
-// CHECK: 1839:1: note: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1842:15: note: NSNumber boxed expression produces an object with a +0 retain count
-// CHECK:   id value = [@(x) retain];
-// CHECK:               ^
-// CHECK: 1842:14: note: Reference count incremented. The object now has a +1 retain count
-// CHECK:   id value = [@(x) retain];
-// CHECK:              ^
-// CHECK: 1846:3: note: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1
-// CHECK:   [value description];
-// CHECK:   ^
-// CHECK: 1845:12: note: NSString boxed expression produces an object with a +0 retain count
-// CHECK:   value = [@(y) retain];
-// CHECK:            ^
-// CHECK: 1845:11: note: Reference count incremented. The object now has a +1 retain count
-// CHECK:   value = [@(y) retain];
-// CHECK:           ^
-// CHECK: 1847:1: note: Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^
-// CHECK: 1854:5: note: Taking false branch
-// CHECK:     if(y > 2)
-// CHECK:     ^
-// CHECK: 1857:21: note: Method returns an Objective-C object with a +1 retain count
-// CHECK:       printString = [[NSString alloc] init];
-// CHECK:                     ^
-// CHECK: 1859:5: note: Object released
-// CHECK:     [printString release];
-// CHECK:     ^
-// CHECK: 1860:5: note: Reference-counted object is used after it is released
-// CHECK:     NSLog(@"Again: %@", printString);
-// CHECK:     ^
-// CHECK: 1887:19: note: NSArray literal is an object with a +0 retain count
-// CHECK:   id unretained = @[]; // +0
-// CHECK:                   ^
-// CHECK: 1888:3: note: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   consumeAndStopTracking(unretained, ^{});
-// CHECK:   ^
-// CHECK: 1900:19: note: NSArray literal is an object with a +0 retain count
-// CHECK:   id unretained = @[]; // +0
-// CHECK:                   ^
-// CHECK: 1901:3: note: Incorrect decrement of the reference count of an object that is not owned at this point by the caller
-// CHECK:   CFConsumeAndStopTracking((CFTypeRef)unretained, ^{});
-// CHECK:   ^
-// CHECK: 1913:16: note: Call to function 'CreateMyCFType' returns a Core Foundation object with a +1 retain count
-// CHECK:   MyCFType x = CreateMyCFType();
-// CHECK:                ^
-// CHECK: 1914:1: note: Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1
-// CHECK: }
-// CHECK: ^