| // RUN: %clang_cc1 -triple x86_64-apple-darwin11 -emit-llvm -fobjc-arc -o - %s | FileCheck %s |
| // rdar://9744349 |
| |
| typedef const struct __CFString * CFStringRef; |
| |
| @interface I |
| @property CFStringRef P; |
| - (CFStringRef) CFMeth __attribute__((cf_returns_retained)); |
| - (CFStringRef) newSomething; |
| - (CFStringRef) P __attribute__((cf_returns_retained)); |
| @end |
| |
| @implementation I |
| @synthesize P; |
| - (id) Meth { |
| I* p1 = (id)[p1 P]; |
| id p2 = (id)[p1 CFMeth]; |
| id p3 = (id)[p1 newSomething]; |
| return (id) p1.P; |
| } |
| - (CFStringRef) CFMeth { return 0; } |
| - (CFStringRef) newSomething { return 0; } |
| - (CFStringRef) P { return 0; } |
| - (void) setP : (CFStringRef)arg {} |
| @end |
| |
| // rdar://9544832 |
| CFStringRef SomeOtherFunc() __attribute__((cf_returns_retained)); |
| id MMM() |
| { |
| id obj = (id)((CFStringRef) __builtin___CFStringMakeConstantString ("" "Some CF String" "")); |
| return 0; |
| } |
| |
| // CHECK-NOT: call i8* @llvm.objc.retainAutoreleasedReturnValue |