xref: /aosp_15_r20/external/clang/test/CodeGenObjC/arc-unbridged-cast.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -emit-llvm  -fobjc-arc -o - %s | FileCheck %s
2*67e74705SXin Li// rdar://9744349
3*67e74705SXin Li
4*67e74705SXin Litypedef const struct __CFString * CFStringRef;
5*67e74705SXin Li
6*67e74705SXin Li@interface I
7*67e74705SXin Li@property CFStringRef P;
8*67e74705SXin Li- (CFStringRef) CFMeth __attribute__((cf_returns_retained));
9*67e74705SXin Li- (CFStringRef) newSomething;
10*67e74705SXin Li- (CFStringRef) P __attribute__((cf_returns_retained));
11*67e74705SXin Li@end
12*67e74705SXin Li
13*67e74705SXin Li@implementation I
14*67e74705SXin Li@synthesize P;
15*67e74705SXin Li- (id) Meth {
16*67e74705SXin Li    I* p1 = (id)[p1 P];
17*67e74705SXin Li    id p2 = (id)[p1 CFMeth];
18*67e74705SXin Li    id p3 = (id)[p1 newSomething];
19*67e74705SXin Li    return (id) p1.P;
20*67e74705SXin Li}
21*67e74705SXin Li- (CFStringRef) CFMeth { return 0; }
22*67e74705SXin Li- (CFStringRef) newSomething { return 0; }
23*67e74705SXin Li- (CFStringRef) P { return 0; }
24*67e74705SXin Li- (void) setP : (CFStringRef)arg {}
25*67e74705SXin Li@end
26*67e74705SXin Li
27*67e74705SXin Li// rdar://9544832
28*67e74705SXin LiCFStringRef SomeOtherFunc() __attribute__((cf_returns_retained));
29*67e74705SXin Liid MMM()
30*67e74705SXin Li{
31*67e74705SXin Li  id obj = (id)((CFStringRef) __builtin___CFStringMakeConstantString ("" "Some CF String" ""));
32*67e74705SXin Li  return 0;
33*67e74705SXin Li}
34*67e74705SXin Li
35*67e74705SXin Li// CHECK-NOT: call i8* @objc_retainAutoreleasedReturnValue
36