// 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(void) __attribute__((cf_returns_retained));
id MMM(void)
{
  id obj = (id)((CFStringRef) __builtin___CFStringMakeConstantString ("" "Some CF String" ""));
  return 0;
}

// CHECK-NOT: call i8* @llvm.objc.retainAutoreleasedReturnValue
