]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGenObjC/encode-test-6.m
Vendor import of clang trunk r238337:
[FreeBSD/FreeBSD.git] / test / CodeGenObjC / encode-test-6.m
1 // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o %t %s
2 // RUN: FileCheck < %t %s
3 // rdar://11777609
4
5 typedef struct {} Z;
6
7 @interface A
8 -(void)bar:(Z)a;
9 -(void)foo:(Z)a : (char*)b : (Z)c : (double) d;
10 @end
11
12 @implementation A
13 -(void)bar:(Z)a {}
14 -(void)foo:(Z)a: (char*)b : (Z)c : (double) d {}
15 @end
16
17 // CHECK: private global [14 x i8] c"v16@0:8{?=}16
18 // CHECK: private global [26 x i8] c"v32@0:8{?=}16*16{?=}24d24
19
20
21 // rdar://13190095
22 @interface NSObject @end
23
24 @class BABugExample;
25 typedef BABugExample BABugExampleRedefinition;
26
27 @interface BABugExample : NSObject {
28     BABugExampleRedefinition *_property; // .asciz   "^{BABugExample=^{BABugExample}}"
29 }
30 @property (copy) BABugExampleRedefinition *property;
31 @end
32
33 @implementation BABugExample
34 @synthesize property = _property;
35 @end
36
37 // CHECK: private global [24 x i8] c"^{BABugExample=@}16
38
39 // rdar://14408244
40 @class SCNCamera;
41 typedef SCNCamera C3DCamera;
42 typedef struct
43 {
44     C3DCamera *presentationInstance;
45 }  C3DCameraStorage;
46
47 @interface SCNCamera
48 @end
49
50 @implementation SCNCamera
51 {
52     C3DCameraStorage _storage;
53 }
54 @end
55 // CHECK: private global [39 x i8] c"{?=\22presentationInstance\22^{SCNCamera}}\00"
56
57 // rdar://16655340
58 int i;
59 typeof(@encode(typeof(i))) e = @encode(typeof(i));
60 const char * Test()
61 {
62     return e;
63 }
64 // CHECK: @e = global [2 x i8] c"i\00", align 1
65 // CHECK: define i8* @Test()
66 // CHECK: ret i8* getelementptr inbounds ([2 x i8], [2 x i8]* @e, i32 0, i32 0)