annotate clang/test/CodeGenObjC/dllstorage.m @ 180:680fa57a2f20

fix compile errors.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 30 May 2020 17:44:06 +0900
parents 1d019706d866
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fdeclspec -fobjc-runtime=ios -fobjc-exceptions -S -emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap -check-prefix CHECK-IR %s
anatofuz
parents:
diff changeset
2 // RUN: %clang_cc1 -triple i686-windows-itanium -fms-extensions -fobjc-runtime=macosx -fdeclspec -fobjc-exceptions -S -emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap -check-prefix CHECK-IR %s
anatofuz
parents:
diff changeset
3 // RUN: %clang_cc1 -triple i686-windows-itanium -fms-extensions -fobjc-runtime=objfw -fdeclspec -fobjc-exceptions -S -emit-llvm -o - %s | FileCheck -allow-deprecated-dag-overlap -check-prefix CHECK-FW %s
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 // CHECK-IR-DAG: @_objc_empty_cache = external dllimport global %struct._objc_cache
anatofuz
parents:
diff changeset
6
anatofuz
parents:
diff changeset
7 __declspec(dllimport)
anatofuz
parents:
diff changeset
8 @interface I
anatofuz
parents:
diff changeset
9 + (instancetype) new;
anatofuz
parents:
diff changeset
10 @end
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 // CHECK-IR-DAG: @"OBJC_METACLASS_$_I" = external dllimport global %struct._class_t
anatofuz
parents:
diff changeset
13 // CHECK-IR-DAG: @"OBJC_CLASS_$_I" = external dllimport global %struct._class_t
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 __declspec(dllexport)
anatofuz
parents:
diff changeset
16 @interface J : I
anatofuz
parents:
diff changeset
17 @end
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 // CHECK-IR-DAG: @"OBJC_METACLASS_$_J" = dso_local dllexport global %struct._class_t
anatofuz
parents:
diff changeset
20 // CHECK-IR-DAG: @"OBJC_CLASS_$_J" = dso_local dllexport global %struct._class_t
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 // CHECK-FW-DAG: @_OBJC_METACLASS_J = dso_local dllexport global
anatofuz
parents:
diff changeset
23 // CHECK-FW-DAG: @_OBJC_CLASS_J = dso_local dllexport global
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 @implementation J {
anatofuz
parents:
diff changeset
26 id _ivar;
anatofuz
parents:
diff changeset
27 }
anatofuz
parents:
diff changeset
28 @end
anatofuz
parents:
diff changeset
29
anatofuz
parents:
diff changeset
30 // CHECK-IR-DAG: @"OBJC_IVAR_$_J._ivar" = global i32
anatofuz
parents:
diff changeset
31
anatofuz
parents:
diff changeset
32 @interface K : J
anatofuz
parents:
diff changeset
33 @end
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35 // CHECK-IR-DAG: @"OBJC_METACLASS_$_K" = dso_local global %struct._class_t
anatofuz
parents:
diff changeset
36 // CHECK-IR-DAG: @"OBJC_CLASS_$_K" = dso_local global %struct._class_t
anatofuz
parents:
diff changeset
37
anatofuz
parents:
diff changeset
38 // CHECK-FW-DAG: @_OBJC_METACLASS_K = dso_local global
anatofuz
parents:
diff changeset
39 // CHECK-FW-DAG: @_OBJC_CLASS_K = dso_local global
anatofuz
parents:
diff changeset
40
anatofuz
parents:
diff changeset
41 @implementation K {
anatofuz
parents:
diff changeset
42 id _ivar;
anatofuz
parents:
diff changeset
43 }
anatofuz
parents:
diff changeset
44 @end
anatofuz
parents:
diff changeset
45
anatofuz
parents:
diff changeset
46 // CHECK-IR-DAG: @"OBJC_IVAR_$_K._ivar" = global i32
anatofuz
parents:
diff changeset
47
anatofuz
parents:
diff changeset
48 __declspec(dllexport)
anatofuz
parents:
diff changeset
49 @interface L : K
anatofuz
parents:
diff changeset
50 @end
anatofuz
parents:
diff changeset
51
anatofuz
parents:
diff changeset
52 // CHECK-IR-DAG: @"OBJC_METACLASS_$_L" = dso_local dllexport global %struct._class_t
anatofuz
parents:
diff changeset
53 // CHECK-IR-DAG: @"OBJC_CLASS_$_L" = dso_local dllexport global %struct._class_t
anatofuz
parents:
diff changeset
54
anatofuz
parents:
diff changeset
55 // CHECK-FW-DAG: @_OBJC_METACLASS_L = dso_local dllexport global
anatofuz
parents:
diff changeset
56 // CHECK-FW-DAG: @_OBJC_CLASS_L = dso_local dllexport global
anatofuz
parents:
diff changeset
57
anatofuz
parents:
diff changeset
58 @implementation L {
anatofuz
parents:
diff changeset
59 id _none;
anatofuz
parents:
diff changeset
60
anatofuz
parents:
diff changeset
61 @public
anatofuz
parents:
diff changeset
62 id _public;
anatofuz
parents:
diff changeset
63
anatofuz
parents:
diff changeset
64 @protected
anatofuz
parents:
diff changeset
65 id _protected;
anatofuz
parents:
diff changeset
66
anatofuz
parents:
diff changeset
67 @package
anatofuz
parents:
diff changeset
68 id _package;
anatofuz
parents:
diff changeset
69
anatofuz
parents:
diff changeset
70 @private
anatofuz
parents:
diff changeset
71 id _private;
anatofuz
parents:
diff changeset
72 }
anatofuz
parents:
diff changeset
73 @end
anatofuz
parents:
diff changeset
74
anatofuz
parents:
diff changeset
75 // CHECK-IR-DAG: @"OBJC_IVAR_$_L._none" = global i32
anatofuz
parents:
diff changeset
76 // CHECK-IR-DAG: @"OBJC_IVAR_$_L._public" = dllexport global i32
anatofuz
parents:
diff changeset
77 // CHECK-IR-DAG: @"OBJC_IVAR_$_L._protected" = dllexport global i32
anatofuz
parents:
diff changeset
78 // CHECK-IR-DAG: @"OBJC_IVAR_$_L._package" = global i32
anatofuz
parents:
diff changeset
79 // CHECK-IR-DAG: @"OBJC_IVAR_$_L._private" = global i32
anatofuz
parents:
diff changeset
80
anatofuz
parents:
diff changeset
81 __declspec(dllimport)
anatofuz
parents:
diff changeset
82 @interface M : I {
anatofuz
parents:
diff changeset
83 @public
anatofuz
parents:
diff changeset
84 id _ivar;
anatofuz
parents:
diff changeset
85 }
anatofuz
parents:
diff changeset
86 @end
anatofuz
parents:
diff changeset
87
anatofuz
parents:
diff changeset
88 // CHECK-FW-DAG: @_OBJC_CLASS_M = external dllimport global i32
anatofuz
parents:
diff changeset
89
anatofuz
parents:
diff changeset
90 // CHECK-IR-DAG: @"OBJC_IVAR_$_M._ivar" = external dllimport global i32
anatofuz
parents:
diff changeset
91
anatofuz
parents:
diff changeset
92 __declspec(dllexport)
anatofuz
parents:
diff changeset
93 __attribute__((__objc_exception__))
anatofuz
parents:
diff changeset
94 @interface N : I
anatofuz
parents:
diff changeset
95 @end
anatofuz
parents:
diff changeset
96
anatofuz
parents:
diff changeset
97 // CHECK-FW-DAG: @_OBJC_METACLASS_N = dso_local dllexport global
anatofuz
parents:
diff changeset
98 // CHECK-FW-DAG: @_OBJC_CLASS_N = dso_local dllexport global
anatofuz
parents:
diff changeset
99
anatofuz
parents:
diff changeset
100 @implementation N : I
anatofuz
parents:
diff changeset
101 @end
anatofuz
parents:
diff changeset
102
anatofuz
parents:
diff changeset
103 // CHECK-IR-DAG: @"OBJC_EHTYPE_$_N" = dso_local dllexport global %struct._objc_typeinfo
anatofuz
parents:
diff changeset
104
anatofuz
parents:
diff changeset
105 __declspec(dllimport)
anatofuz
parents:
diff changeset
106 __attribute__((__objc_exception__))
anatofuz
parents:
diff changeset
107 @interface O : I
anatofuz
parents:
diff changeset
108 @end
anatofuz
parents:
diff changeset
109
anatofuz
parents:
diff changeset
110 // CHECK-IR-DAG: @"OBJC_EHTYPE_$_O" = external dllimport global %struct._objc_typeinfo
anatofuz
parents:
diff changeset
111
anatofuz
parents:
diff changeset
112 __attribute__((__objc_exception__))
anatofuz
parents:
diff changeset
113 @interface P : I
anatofuz
parents:
diff changeset
114 @end
anatofuz
parents:
diff changeset
115
anatofuz
parents:
diff changeset
116 // CHECK-IR-DAG: @"OBJC_EHTYPE_$_P" = external dso_local global %struct._objc_typeinfo
anatofuz
parents:
diff changeset
117
anatofuz
parents:
diff changeset
118 @interface Q : M
anatofuz
parents:
diff changeset
119 @end
anatofuz
parents:
diff changeset
120
anatofuz
parents:
diff changeset
121 id f(Q *q) {
anatofuz
parents:
diff changeset
122 return q->_ivar;
anatofuz
parents:
diff changeset
123 }
anatofuz
parents:
diff changeset
124
anatofuz
parents:
diff changeset
125 // CHECK-IR-DAG: @"OBJC_IVAR_$_M._ivar" = external dllimport global i32
anatofuz
parents:
diff changeset
126
anatofuz
parents:
diff changeset
127 int g() {
anatofuz
parents:
diff changeset
128 @autoreleasepool {
anatofuz
parents:
diff changeset
129 M *mi = [M new];
anatofuz
parents:
diff changeset
130 @try {
anatofuz
parents:
diff changeset
131 mi->_ivar = (void *)0;
anatofuz
parents:
diff changeset
132 @throw(@"CFConstantString");
anatofuz
parents:
diff changeset
133 } @catch (id) {
anatofuz
parents:
diff changeset
134 return 1;
anatofuz
parents:
diff changeset
135 } @catch (I *) {
anatofuz
parents:
diff changeset
136 return 2;
anatofuz
parents:
diff changeset
137 } @catch (J *) {
anatofuz
parents:
diff changeset
138 return 3;
anatofuz
parents:
diff changeset
139 } @catch (K *) {
anatofuz
parents:
diff changeset
140 return 4;
anatofuz
parents:
diff changeset
141 } @catch (L *) {
anatofuz
parents:
diff changeset
142 return 5;
anatofuz
parents:
diff changeset
143 } @catch (M *) {
anatofuz
parents:
diff changeset
144 return 6;
anatofuz
parents:
diff changeset
145 } @catch (N *) {
anatofuz
parents:
diff changeset
146 return 7;
anatofuz
parents:
diff changeset
147 } @catch (O *) {
anatofuz
parents:
diff changeset
148 return 8;
anatofuz
parents:
diff changeset
149 } @catch (P *) {
anatofuz
parents:
diff changeset
150 return 9;
anatofuz
parents:
diff changeset
151 }
anatofuz
parents:
diff changeset
152 }
anatofuz
parents:
diff changeset
153 return 0;
anatofuz
parents:
diff changeset
154 }
anatofuz
parents:
diff changeset
155
anatofuz
parents:
diff changeset
156 // CHECK-IR-DAG: @OBJC_EHTYPE_id = external dllimport global %struct._objc_typeinfo
anatofuz
parents:
diff changeset
157 // CHECK-IR-DAG: @"OBJC_EHTYPE_$_I" = weak global %struct._objc_typeinfo
anatofuz
parents:
diff changeset
158 // CHECK-IR-DAG: @"OBJC_EHTYPE_$_K" = weak global %struct._objc_typeinfo
anatofuz
parents:
diff changeset
159 // CHECK-IR-DAG: @"OBJC_EHTYPE_$_L" = weak global %struct._objc_typeinfo
anatofuz
parents:
diff changeset
160 // CHECK-IR-DAG: @"OBJC_EHTYPE_$_M" = weak global %struct._objc_typeinfo
anatofuz
parents:
diff changeset
161