Fix <rdar://problem/7033733>.  The CF_RETURNS_RETAINED attribute should work if the return type on an Objective-C method is a CF type reference, not just an Objective-C object reference.

llvm-svn: 74841
diff --git a/clang/test/Analysis/retain-release.m b/clang/test/Analysis/retain-release.m
index da0ae80..6347014 100644
--- a/clang/test/Analysis/retain-release.m
+++ b/clang/test/Analysis/retain-release.m
@@ -815,7 +815,9 @@
 
 @interface MyClassTestCFAttr : NSObject {}
 - (NSDate*) returnsCFRetained __attribute__((cf_returns_retained));
+- (CFDateRef) returnsCFRetainedAsCF __attribute__((cf_returns_retained));
 - (NSDate*) alsoReturnsRetained;
+- (CFDateRef) alsoReturnsRetainedAsCF;
 - (NSDate*) returnsNSRetained __attribute__((ns_returns_retained));
 @end
 
@@ -829,10 +831,20 @@
   return (NSDate*) returnsRetainedCFDate(); // No leak.
 }
 
+- (CFDateRef) returnsCFRetainedAsCF {
+  return returnsRetainedCFDate(); // No leak.
+}
+
+
 - (NSDate*) alsoReturnsRetained {
   return (NSDate*) returnsRetainedCFDate(); // expected-warning{{leak}}
 }
 
+- (CFDateRef) alsoReturnsRetainedAsCF {
+  return returnsRetainedCFDate(); // expected-warning{{leak}}
+}
+
+
 - (NSDate*) returnsNSRetained {
   return (NSDate*) returnsRetainedCFDate(); // no-warning
 }