1 | // RUN: %clang_cc1 -triple i686-windows-msvc -fms-compatibility -emit-llvm -std=c++1y -O0 -o - %s -DMSABI | FileCheck --check-prefix=MSC --check-prefix=M32 %s |
2 | // RUN: %clang_cc1 -triple x86_64-windows-msvc -fms-compatibility -emit-llvm -std=c++1y -O0 -o - %s -DMSABI | FileCheck --check-prefix=MSC --check-prefix=M64 %s |
3 | // RUN: %clang_cc1 -triple i686-windows-gnu -emit-llvm -std=c++1y -O0 -o - %s | FileCheck --check-prefix=GNU --check-prefix=G32 %s |
4 | // RUN: %clang_cc1 -triple x86_64-windows-gnu -emit-llvm -std=c++1y -O0 -o - %s | FileCheck --check-prefix=GNU --check-prefix=G64 %s |
5 | // RUN: %clang_cc1 -triple i686-windows-msvc -fms-compatibility -emit-llvm -std=c++1y -O1 -o - %s -DMSABI | FileCheck --check-prefix=MO1 %s |
6 | // RUN: %clang_cc1 -triple i686-windows-gnu -emit-llvm -std=c++1y -O1 -o - %s | FileCheck --check-prefix=GO1 %s |
7 | |
8 | // Helper structs to make templates more expressive. |
9 | struct ImplicitInst_Imported {}; |
10 | struct ExplicitDecl_Imported {}; |
11 | struct ExplicitInst_Imported {}; |
12 | struct ExplicitSpec_Imported {}; |
13 | struct ExplicitSpec_Def_Imported {}; |
14 | struct ExplicitSpec_InlineDef_Imported {}; |
15 | struct ExplicitSpec_NotImported {}; |
16 | |
17 | #define JOIN2(x, y) x##y |
18 | #define JOIN(x, y) JOIN2(x, y) |
19 | #define UNIQ(name) JOIN(name, __LINE__) |
20 | #define USE(func) void UNIQ(use)() { func(); } |
21 | #define USEMV(cls, var) int UNIQ(use)() { return ref(cls::var); } |
22 | #define USEMF(cls, fun) template<> void useMemFun<__LINE__, cls>() { cls().fun(); } |
23 | #define USESPECIALS(cls) void UNIQ(use)() { useSpecials<cls>(); } |
24 | |
25 | template<typename T> |
26 | T ref(T const& v) { return v; } |
27 | |
28 | template<int Line, typename T> |
29 | void useMemFun(); |
30 | |
31 | template<typename T> |
32 | void useSpecials() { |
33 | T v; // Default constructor |
34 | |
35 | T c1(static_cast<const T&>(v)); // Copy constructor |
36 | T c2 = static_cast<const T&>(v); // Copy constructor |
37 | T c3; |
38 | c3 = static_cast<const T&>(v); // Copy assignment |
39 | |
40 | T m1(static_cast<T&&>(v)); // Move constructor |
41 | T m2 = static_cast<T&&>(v); // Move constructor |
42 | T m3; |
43 | m3 = static_cast<T&&>(v); // Move assignment |
44 | } |
45 | |
46 | // Used to force non-trivial special members. |
47 | struct __declspec(dllimport) ForceNonTrivial { |
48 | ForceNonTrivial(); |
49 | ~ForceNonTrivial(); |
50 | ForceNonTrivial(const ForceNonTrivial&); |
51 | ForceNonTrivial& operator=(const ForceNonTrivial&); |
52 | ForceNonTrivial(ForceNonTrivial&&); |
53 | ForceNonTrivial& operator=(ForceNonTrivial&&); |
54 | }; |
55 | |
56 | |
57 | |
58 | //===----------------------------------------------------------------------===// |
59 | // Class members |
60 | //===----------------------------------------------------------------------===// |
61 | |
62 | // Import individual members of a class. |
63 | struct ImportMembers { |
64 | struct Nested; |
65 | |
66 | // M32-DAG: define dso_local dllexport x86_thiscallcc void @"?normalDef@ImportMembers@@QAEXXZ"(%struct.ImportMembers* %this) |
67 | // M64-DAG: define dso_local dllexport void @"?normalDef@ImportMembers@@QEAAXXZ"(%struct.ImportMembers* %this) |
68 | // M32-DAG: declare dllimport x86_thiscallcc void @"?normalDecl@ImportMembers@@QAEXXZ"(%struct.ImportMembers*) |
69 | // M64-DAG: declare dllimport void @"?normalDecl@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*) |
70 | // M32-DAG: declare dllimport x86_thiscallcc void @"?normalInclass@ImportMembers@@QAEXXZ"(%struct.ImportMembers*) |
71 | // M64-DAG: declare dllimport void @"?normalInclass@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*) |
72 | // M32-DAG: declare dllimport x86_thiscallcc void @"?normalInlineDef@ImportMembers@@QAEXXZ"(%struct.ImportMembers*) |
73 | // M64-DAG: declare dllimport void @"?normalInlineDef@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*) |
74 | // M32-DAG: declare dllimport x86_thiscallcc void @"?normalInlineDecl@ImportMembers@@QAEXXZ"(%struct.ImportMembers*) |
75 | // M64-DAG: declare dllimport void @"?normalInlineDecl@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*) |
76 | // G32-DAG: define dso_local x86_thiscallcc void @_ZN13ImportMembers9normalDefEv(%struct.ImportMembers* %this) |
77 | // G64-DAG: define dso_local void @_ZN13ImportMembers9normalDefEv(%struct.ImportMembers* %this) |
78 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers10normalDeclEv(%struct.ImportMembers*) |
79 | // G64-DAG: declare dllimport void @_ZN13ImportMembers10normalDeclEv(%struct.ImportMembers*) |
80 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers13normalInclassEv(%struct.ImportMembers* %this) |
81 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers13normalInclassEv(%struct.ImportMembers* %this) |
82 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers15normalInlineDefEv(%struct.ImportMembers* %this) |
83 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers15normalInlineDefEv(%struct.ImportMembers* %this) |
84 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers16normalInlineDeclEv(%struct.ImportMembers* %this) |
85 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers16normalInlineDeclEv(%struct.ImportMembers* %this) |
86 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?normalInclass@ImportMembers@@QAEXXZ"( |
87 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?normalInlineDef@ImportMembers@@QAEXXZ"( |
88 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?normalInlineDecl@ImportMembers@@QAEXXZ"( |
89 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers13normalInclassEv( |
90 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers15normalInlineDefEv( |
91 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers16normalInlineDeclEv( |
92 | __declspec(dllimport) void normalDef(); // dllimport ignored |
93 | __declspec(dllimport) void normalDecl(); |
94 | __declspec(dllimport) void normalInclass() {} |
95 | __declspec(dllimport) void normalInlineDef(); |
96 | __declspec(dllimport) inline void normalInlineDecl(); |
97 | |
98 | // M32-DAG: define dso_local dllexport x86_thiscallcc void @"?virtualDef@ImportMembers@@UAEXXZ"(%struct.ImportMembers* %this) |
99 | // M64-DAG: define dso_local dllexport void @"?virtualDef@ImportMembers@@UEAAXXZ"(%struct.ImportMembers* %this) |
100 | // M32-DAG: declare dllimport x86_thiscallcc void @"?virtualDecl@ImportMembers@@UAEXXZ"(%struct.ImportMembers*) |
101 | // M64-DAG: declare dllimport void @"?virtualDecl@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*) |
102 | // M32-DAG: declare dllimport x86_thiscallcc void @"?virtualInclass@ImportMembers@@UAEXXZ"(%struct.ImportMembers*) |
103 | // M64-DAG: declare dllimport void @"?virtualInclass@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*) |
104 | // M32-DAG: declare dllimport x86_thiscallcc void @"?virtualInlineDef@ImportMembers@@UAEXXZ"(%struct.ImportMembers*) |
105 | // M64-DAG: declare dllimport void @"?virtualInlineDef@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*) |
106 | // M32-DAG: declare dllimport x86_thiscallcc void @"?virtualInlineDecl@ImportMembers@@UAEXXZ"(%struct.ImportMembers*) |
107 | // M64-DAG: declare dllimport void @"?virtualInlineDecl@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*) |
108 | // G32-DAG: define dso_local x86_thiscallcc void @_ZN13ImportMembers10virtualDefEv(%struct.ImportMembers* %this) |
109 | // G64-DAG: define dso_local void @_ZN13ImportMembers10virtualDefEv(%struct.ImportMembers* %this) |
110 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers11virtualDeclEv(%struct.ImportMembers*) |
111 | // G64-DAG: declare dllimport void @_ZN13ImportMembers11virtualDeclEv(%struct.ImportMembers*) |
112 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers14virtualInclassEv(%struct.ImportMembers* %this) |
113 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers14virtualInclassEv(%struct.ImportMembers* %this) |
114 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers16virtualInlineDefEv(%struct.ImportMembers* %this) |
115 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers16virtualInlineDefEv(%struct.ImportMembers* %this) |
116 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers17virtualInlineDeclEv(%struct.ImportMembers* %this) |
117 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers17virtualInlineDeclEv(%struct.ImportMembers* %this) |
118 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?virtualInclass@ImportMembers@@UAEXXZ"( |
119 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?virtualInlineDef@ImportMembers@@UAEXXZ"( |
120 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?virtualInlineDecl@ImportMembers@@UAEXXZ"( |
121 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers14virtualInclassEv( |
122 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers16virtualInlineDefEv( |
123 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers17virtualInlineDeclEv( |
124 | __declspec(dllimport) virtual void virtualDef(); // dllimport ignored |
125 | __declspec(dllimport) virtual void virtualDecl(); |
126 | __declspec(dllimport) virtual void virtualInclass() {} |
127 | __declspec(dllimport) virtual void virtualInlineDef(); |
128 | __declspec(dllimport) virtual inline void virtualInlineDecl(); |
129 | |
130 | // MSC-DAG: define dso_local dllexport void @"?staticDef@ImportMembers@@SAXXZ"() |
131 | // MSC-DAG: declare dllimport void @"?staticDecl@ImportMembers@@SAXXZ"() |
132 | // MSC-DAG: declare dllimport void @"?staticInclass@ImportMembers@@SAXXZ"() |
133 | // MSC-DAG: declare dllimport void @"?staticInlineDef@ImportMembers@@SAXXZ"() |
134 | // MSC-DAG: declare dllimport void @"?staticInlineDecl@ImportMembers@@SAXXZ"() |
135 | // GNU-DAG: define dso_local void @_ZN13ImportMembers9staticDefEv() |
136 | // GNU-DAG: declare dllimport void @_ZN13ImportMembers10staticDeclEv() |
137 | // GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers13staticInclassEv() |
138 | // GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers15staticInlineDefEv() |
139 | // GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers16staticInlineDeclEv() |
140 | // MO1-DAG: define available_externally dllimport void @"?staticInclass@ImportMembers@@SAXXZ"() |
141 | // MO1-DAG: define available_externally dllimport void @"?staticInlineDef@ImportMembers@@SAXXZ"() |
142 | // MO1-DAG: define available_externally dllimport void @"?staticInlineDecl@ImportMembers@@SAXXZ"() |
143 | // GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers13staticInclassEv() |
144 | // GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers15staticInlineDefEv() |
145 | // GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers16staticInlineDeclEv() |
146 | __declspec(dllimport) static void staticDef(); // dllimport ignored |
147 | __declspec(dllimport) static void staticDecl(); |
148 | __declspec(dllimport) static void staticInclass() {} |
149 | __declspec(dllimport) static void staticInlineDef(); |
150 | __declspec(dllimport) static inline void staticInlineDecl(); |
151 | |
152 | // M32-DAG: declare dllimport x86_thiscallcc void @"?protectedNormalDecl@ImportMembers@@IAEXXZ"(%struct.ImportMembers*) |
153 | // M64-DAG: declare dllimport void @"?protectedNormalDecl@ImportMembers@@IEAAXXZ"(%struct.ImportMembers*) |
154 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers19protectedNormalDeclEv(%struct.ImportMembers*) |
155 | // G64-DAG: declare dllimport void @_ZN13ImportMembers19protectedNormalDeclEv(%struct.ImportMembers*) |
156 | // MSC-DAG: declare dllimport void @"?protectedStaticDecl@ImportMembers@@KAXXZ"() |
157 | // GNU-DAG: declare dllimport void @_ZN13ImportMembers19protectedStaticDeclEv() |
158 | protected: |
159 | __declspec(dllimport) void protectedNormalDecl(); |
160 | __declspec(dllimport) static void protectedStaticDecl(); |
161 | |
162 | // M32-DAG: declare dllimport x86_thiscallcc void @"?privateNormalDecl@ImportMembers@@AAEXXZ"(%struct.ImportMembers*) |
163 | // M64-DAG: declare dllimport void @"?privateNormalDecl@ImportMembers@@AEAAXXZ"(%struct.ImportMembers*) |
164 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers17privateNormalDeclEv(%struct.ImportMembers*) |
165 | // G64-DAG: declare dllimport void @_ZN13ImportMembers17privateNormalDeclEv(%struct.ImportMembers*) |
166 | // MSC-DAG: declare dllimport void @"?privateStaticDecl@ImportMembers@@CAXXZ"() |
167 | // GNU-DAG: declare dllimport void @_ZN13ImportMembers17privateStaticDeclEv() |
168 | private: |
169 | __declspec(dllimport) void privateNormalDecl(); |
170 | __declspec(dllimport) static void privateStaticDecl(); |
171 | |
172 | // M32-DAG: declare dso_local x86_thiscallcc void @"?ignored@ImportMembers@@QAEXXZ"(%struct.ImportMembers*) |
173 | // M64-DAG: declare dso_local void @"?ignored@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*) |
174 | // G32-DAG: declare dso_local x86_thiscallcc void @_ZN13ImportMembers7ignoredEv(%struct.ImportMembers*) |
175 | // G64-DAG: declare dso_local void @_ZN13ImportMembers7ignoredEv(%struct.ImportMembers*) |
176 | public: |
177 | void ignored(); |
178 | |
179 | // MSC-DAG: @"?StaticField@ImportMembers@@2HA" = external dllimport global i32 |
180 | // MSC-DAG: @"?StaticConstField@ImportMembers@@2HB" = external dllimport constant i32 |
181 | // MSC-DAG: @"?StaticConstFieldEqualInit@ImportMembers@@2HB" = available_externally dllimport constant i32 1, align 4 |
182 | // MSC-DAG: @"?StaticConstFieldBraceInit@ImportMembers@@2HB" = available_externally dllimport constant i32 1, align 4 |
183 | // MSC-DAG: @"?ConstexprField@ImportMembers@@2HB" = available_externally dllimport constant i32 1, align 4 |
184 | // GNU-DAG: @_ZN13ImportMembers11StaticFieldE = external dllimport global i32 |
185 | // GNU-DAG: @_ZN13ImportMembers16StaticConstFieldE = external dllimport constant i32 |
186 | // GNU-DAG: @_ZN13ImportMembers25StaticConstFieldEqualInitE = external dllimport constant i32 |
187 | // GNU-DAG: @_ZN13ImportMembers25StaticConstFieldBraceInitE = external dllimport constant i32 |
188 | // GNU-DAG: @_ZN13ImportMembers14ConstexprFieldE = external dllimport constant i32 |
189 | __declspec(dllimport) static int StaticField; |
190 | __declspec(dllimport) static const int StaticConstField; |
191 | __declspec(dllimport) static const int StaticConstFieldEqualInit = 1; |
192 | __declspec(dllimport) static const int StaticConstFieldBraceInit{1}; |
193 | __declspec(dllimport) constexpr static int ConstexprField = 1; |
194 | |
195 | template<int Line, typename T> friend void useMemFun(); |
196 | }; |
197 | |
198 | void ImportMembers::normalDef() {} // dllimport ignored |
199 | inline void ImportMembers::normalInlineDef() {} |
200 | void ImportMembers::normalInlineDecl() {} |
201 | void ImportMembers::virtualDef() {} // dllimport ignored |
202 | inline void ImportMembers::virtualInlineDef() {} |
203 | void ImportMembers::virtualInlineDecl() {} |
204 | void ImportMembers::staticDef() {} // dllimport ignored |
205 | inline void ImportMembers::staticInlineDef() {} |
206 | void ImportMembers::staticInlineDecl() {} |
207 | |
208 | USEMF(ImportMembers, normalDef) |
209 | USEMF(ImportMembers, normalDecl) |
210 | USEMF(ImportMembers, normalInclass) |
211 | USEMF(ImportMembers, normalInlineDef) |
212 | USEMF(ImportMembers, normalInlineDecl) |
213 | USEMF(ImportMembers, virtualDef) |
214 | USEMF(ImportMembers, virtualDecl) |
215 | USEMF(ImportMembers, virtualInclass) |
216 | USEMF(ImportMembers, virtualInlineDef) |
217 | USEMF(ImportMembers, virtualInlineDecl) |
218 | USEMF(ImportMembers, staticDef) |
219 | USEMF(ImportMembers, staticDecl) |
220 | USEMF(ImportMembers, staticInclass) |
221 | USEMF(ImportMembers, staticInlineDef) |
222 | USEMF(ImportMembers, staticInlineDecl) |
223 | USEMF(ImportMembers, protectedNormalDecl) |
224 | USEMF(ImportMembers, protectedStaticDecl) |
225 | USEMF(ImportMembers, privateNormalDecl) |
226 | USEMF(ImportMembers, privateStaticDecl) |
227 | USEMF(ImportMembers, ignored) |
228 | |
229 | USEMV(ImportMembers, StaticField) |
230 | USEMV(ImportMembers, StaticConstField) |
231 | USEMV(ImportMembers, StaticConstFieldEqualInit) |
232 | USEMV(ImportMembers, StaticConstFieldBraceInit) |
233 | USEMV(ImportMembers, ConstexprField) |
234 | |
235 | |
236 | // Import individual members of a nested class. |
237 | struct ImportMembers::Nested { |
238 | // M32-DAG: define dso_local dllexport x86_thiscallcc void @"?normalDef@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"* %this) |
239 | // M64-DAG: define dso_local dllexport void @"?normalDef@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"* %this) |
240 | // M32-DAG: declare dllimport x86_thiscallcc void @"?normalDecl@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*) |
241 | // M64-DAG: declare dllimport void @"?normalDecl@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*) |
242 | // M32-DAG: declare dllimport x86_thiscallcc void @"?normalInclass@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*) |
243 | // M64-DAG: declare dllimport void @"?normalInclass@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*) |
244 | // M32-DAG: declare dllimport x86_thiscallcc void @"?normalInlineDef@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*) |
245 | // M64-DAG: declare dllimport void @"?normalInlineDef@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*) |
246 | // M32-DAG: declare dllimport x86_thiscallcc void @"?normalInlineDecl@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*) |
247 | // M64-DAG: declare dllimport void @"?normalInlineDecl@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*) |
248 | // G32-DAG: define dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested9normalDefEv(%"struct.ImportMembers::Nested"* %this) |
249 | // G64-DAG: define dso_local void @_ZN13ImportMembers6Nested9normalDefEv(%"struct.ImportMembers::Nested"* %this) |
250 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers6Nested10normalDeclEv(%"struct.ImportMembers::Nested"*) |
251 | // G64-DAG: declare dllimport void @_ZN13ImportMembers6Nested10normalDeclEv(%"struct.ImportMembers::Nested"*) |
252 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested13normalInclassEv(%"struct.ImportMembers::Nested"* %this) |
253 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested13normalInclassEv(%"struct.ImportMembers::Nested"* %this) |
254 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested15normalInlineDefEv(%"struct.ImportMembers::Nested"* %this) |
255 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested15normalInlineDefEv(%"struct.ImportMembers::Nested"* %this) |
256 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested16normalInlineDeclEv(%"struct.ImportMembers::Nested"* %this) |
257 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested16normalInlineDeclEv(%"struct.ImportMembers::Nested"* %this) |
258 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?normalInclass@Nested@ImportMembers@@QAEXXZ"( |
259 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?normalInlineDef@Nested@ImportMembers@@QAEXXZ"( |
260 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?normalInlineDecl@Nested@ImportMembers@@QAEXXZ"( |
261 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested13normalInclassEv( |
262 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested15normalInlineDefEv( |
263 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested16normalInlineDeclEv( |
264 | __declspec(dllimport) void normalDef(); // dllimport ignored |
265 | __declspec(dllimport) void normalDecl(); |
266 | __declspec(dllimport) void normalInclass() {} |
267 | __declspec(dllimport) void normalInlineDef(); |
268 | __declspec(dllimport) inline void normalInlineDecl(); |
269 | |
270 | // M32-DAG: define dso_local dllexport x86_thiscallcc void @"?virtualDef@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"* %this) |
271 | // M64-DAG: define dso_local dllexport void @"?virtualDef@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"* %this) |
272 | // M32-DAG: declare dllimport x86_thiscallcc void @"?virtualDecl@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*) |
273 | // M64-DAG: declare dllimport void @"?virtualDecl@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*) |
274 | // M32-DAG: declare dllimport x86_thiscallcc void @"?virtualInclass@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*) |
275 | // M64-DAG: declare dllimport void @"?virtualInclass@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*) |
276 | // M32-DAG: declare dllimport x86_thiscallcc void @"?virtualInlineDef@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*) |
277 | // M64-DAG: declare dllimport void @"?virtualInlineDef@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*) |
278 | // M32-DAG: declare dllimport x86_thiscallcc void @"?virtualInlineDecl@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*) |
279 | // M64-DAG: declare dllimport void @"?virtualInlineDecl@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*) |
280 | // G32-DAG: define dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested10virtualDefEv(%"struct.ImportMembers::Nested"* %this) |
281 | // G64-DAG: define dso_local void @_ZN13ImportMembers6Nested10virtualDefEv(%"struct.ImportMembers::Nested"* %this) |
282 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers6Nested11virtualDeclEv(%"struct.ImportMembers::Nested"*) |
283 | // G64-DAG: declare dllimport void @_ZN13ImportMembers6Nested11virtualDeclEv(%"struct.ImportMembers::Nested"*) |
284 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested14virtualInclassEv(%"struct.ImportMembers::Nested"* %this) |
285 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested14virtualInclassEv(%"struct.ImportMembers::Nested"* %this) |
286 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested16virtualInlineDefEv(%"struct.ImportMembers::Nested"* %this) |
287 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested16virtualInlineDefEv(%"struct.ImportMembers::Nested"* %this) |
288 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested17virtualInlineDeclEv(%"struct.ImportMembers::Nested"* %this) |
289 | // G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested17virtualInlineDeclEv(%"struct.ImportMembers::Nested"* %this) |
290 | |
291 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?virtualInclass@Nested@ImportMembers@@UAEXXZ"( |
292 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?virtualInlineDef@Nested@ImportMembers@@UAEXXZ"( |
293 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"?virtualInlineDecl@Nested@ImportMembers@@UAEXXZ"( |
294 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested14virtualInclassEv( |
295 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested16virtualInlineDefEv( |
296 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested17virtualInlineDeclEv( |
297 | __declspec(dllimport) virtual void virtualDef(); // dllimport ignored |
298 | __declspec(dllimport) virtual void virtualDecl(); |
299 | __declspec(dllimport) virtual void virtualInclass() {} |
300 | __declspec(dllimport) virtual void virtualInlineDef(); |
301 | __declspec(dllimport) virtual inline void virtualInlineDecl(); |
302 | |
303 | // MSC-DAG: define dso_local dllexport void @"?staticDef@Nested@ImportMembers@@SAXXZ"() |
304 | // MSC-DAG: declare dllimport void @"?staticDecl@Nested@ImportMembers@@SAXXZ"() |
305 | // MSC-DAG: declare dllimport void @"?staticInclass@Nested@ImportMembers@@SAXXZ"() |
306 | // MSC-DAG: declare dllimport void @"?staticInlineDef@Nested@ImportMembers@@SAXXZ"() |
307 | // MSC-DAG: declare dllimport void @"?staticInlineDecl@Nested@ImportMembers@@SAXXZ"() |
308 | // GNU-DAG: define dso_local void @_ZN13ImportMembers6Nested9staticDefEv() |
309 | // GNU-DAG: declare dllimport void @_ZN13ImportMembers6Nested10staticDeclEv() |
310 | // GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested13staticInclassEv() |
311 | // GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested15staticInlineDefEv() |
312 | // GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested16staticInlineDeclEv() |
313 | // MO1-DAG: define available_externally dllimport void @"?staticInclass@Nested@ImportMembers@@SAXXZ"() |
314 | // MO1-DAG: define available_externally dllimport void @"?staticInlineDef@Nested@ImportMembers@@SAXXZ"() |
315 | // MO1-DAG: define available_externally dllimport void @"?staticInlineDecl@Nested@ImportMembers@@SAXXZ"() |
316 | // GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested13staticInclassEv() |
317 | // GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested15staticInlineDefEv() |
318 | // GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested16staticInlineDeclEv() |
319 | __declspec(dllimport) static void staticDef(); // dllimport ignored |
320 | __declspec(dllimport) static void staticDecl(); |
321 | __declspec(dllimport) static void staticInclass() {} |
322 | __declspec(dllimport) static void staticInlineDef(); |
323 | __declspec(dllimport) static inline void staticInlineDecl(); |
324 | |
325 | // M32-DAG: declare dllimport x86_thiscallcc void @"?protectedNormalDecl@Nested@ImportMembers@@IAEXXZ"(%"struct.ImportMembers::Nested"*) |
326 | // M64-DAG: declare dllimport void @"?protectedNormalDecl@Nested@ImportMembers@@IEAAXXZ"(%"struct.ImportMembers::Nested"*) |
327 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers6Nested19protectedNormalDeclEv(%"struct.ImportMembers::Nested"*) |
328 | // G64-DAG: declare dllimport void @_ZN13ImportMembers6Nested19protectedNormalDeclEv(%"struct.ImportMembers::Nested"*) |
329 | // MSC-DAG: declare dllimport void @"?protectedStaticDecl@Nested@ImportMembers@@KAXXZ"() |
330 | // GNU-DAG: declare dllimport void @_ZN13ImportMembers6Nested19protectedStaticDeclEv() |
331 | protected: |
332 | __declspec(dllimport) void protectedNormalDecl(); |
333 | __declspec(dllimport) static void protectedStaticDecl(); |
334 | |
335 | // M32-DAG: declare dllimport x86_thiscallcc void @"?privateNormalDecl@Nested@ImportMembers@@AAEXXZ"(%"struct.ImportMembers::Nested"*) |
336 | // M64-DAG: declare dllimport void @"?privateNormalDecl@Nested@ImportMembers@@AEAAXXZ"(%"struct.ImportMembers::Nested"*) |
337 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers6Nested17privateNormalDeclEv(%"struct.ImportMembers::Nested"*) |
338 | // G64-DAG: declare dllimport void @_ZN13ImportMembers6Nested17privateNormalDeclEv(%"struct.ImportMembers::Nested"*) |
339 | // MSC-DAG: declare dllimport void @"?privateStaticDecl@Nested@ImportMembers@@CAXXZ"() |
340 | // GNU-DAG: declare dllimport void @_ZN13ImportMembers6Nested17privateStaticDeclEv() |
341 | private: |
342 | __declspec(dllimport) void privateNormalDecl(); |
343 | __declspec(dllimport) static void privateStaticDecl(); |
344 | |
345 | // M32-DAG: declare dso_local x86_thiscallcc void @"?ignored@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*) |
346 | // M64-DAG: declare dso_local void @"?ignored@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*) |
347 | // G32-DAG: declare dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested7ignoredEv(%"struct.ImportMembers::Nested"*) |
348 | // G64-DAG: declare dso_local void @_ZN13ImportMembers6Nested7ignoredEv(%"struct.ImportMembers::Nested"*) |
349 | public: |
350 | void ignored(); |
351 | |
352 | // MSC-DAG: @"?StaticField@Nested@ImportMembers@@2HA" = external dllimport global i32 |
353 | // MSC-DAG: @"?StaticConstField@Nested@ImportMembers@@2HB" = external dllimport constant i32 |
354 | // MSC-DAG: @"?StaticConstFieldEqualInit@Nested@ImportMembers@@2HB" = available_externally dllimport constant i32 1, align 4 |
355 | // MSC-DAG: @"?StaticConstFieldBraceInit@Nested@ImportMembers@@2HB" = available_externally dllimport constant i32 1, align 4 |
356 | // MSC-DAG: @"?ConstexprField@Nested@ImportMembers@@2HB" = available_externally dllimport constant i32 1, align 4 |
357 | // GNU-DAG: @_ZN13ImportMembers6Nested11StaticFieldE = external dllimport global i32 |
358 | // GNU-DAG: @_ZN13ImportMembers6Nested16StaticConstFieldE = external dllimport constant i32 |
359 | // GNU-DAG: @_ZN13ImportMembers6Nested25StaticConstFieldEqualInitE = external dllimport constant i32 |
360 | // GNU-DAG: @_ZN13ImportMembers6Nested25StaticConstFieldBraceInitE = external dllimport constant i32 |
361 | // GNU-DAG: @_ZN13ImportMembers6Nested14ConstexprFieldE = external dllimport constant i32 |
362 | __declspec(dllimport) static int StaticField; |
363 | __declspec(dllimport) static const int StaticConstField; |
364 | __declspec(dllimport) static const int StaticConstFieldEqualInit = 1; |
365 | __declspec(dllimport) static const int StaticConstFieldBraceInit{1}; |
366 | __declspec(dllimport) constexpr static int ConstexprField = 1; |
367 | |
368 | template<int Line, typename T> friend void useMemFun(); |
369 | }; |
370 | |
371 | void ImportMembers::Nested::normalDef() {} // dllimport ignored |
372 | inline void ImportMembers::Nested::normalInlineDef() {} |
373 | void ImportMembers::Nested::normalInlineDecl() {} |
374 | void ImportMembers::Nested::virtualDef() {} // dllimport ignored |
375 | inline void ImportMembers::Nested::virtualInlineDef() {} |
376 | void ImportMembers::Nested::virtualInlineDecl() {} |
377 | void ImportMembers::Nested::staticDef() {} // dllimport ignored |
378 | inline void ImportMembers::Nested::staticInlineDef() {} |
379 | void ImportMembers::Nested::staticInlineDecl() {} |
380 | |
381 | USEMF(ImportMembers::Nested, normalDef) |
382 | USEMF(ImportMembers::Nested, normalDecl) |
383 | USEMF(ImportMembers::Nested, normalInclass) |
384 | USEMF(ImportMembers::Nested, normalInlineDef) |
385 | USEMF(ImportMembers::Nested, normalInlineDecl) |
386 | USEMF(ImportMembers::Nested, virtualDef) |
387 | USEMF(ImportMembers::Nested, virtualDecl) |
388 | USEMF(ImportMembers::Nested, virtualInclass) |
389 | USEMF(ImportMembers::Nested, virtualInlineDef) |
390 | USEMF(ImportMembers::Nested, virtualInlineDecl) |
391 | USEMF(ImportMembers::Nested, staticDef) |
392 | USEMF(ImportMembers::Nested, staticDecl) |
393 | USEMF(ImportMembers::Nested, staticInclass) |
394 | USEMF(ImportMembers::Nested, staticInlineDef) |
395 | USEMF(ImportMembers::Nested, staticInlineDecl) |
396 | USEMF(ImportMembers::Nested, protectedNormalDecl) |
397 | USEMF(ImportMembers::Nested, protectedStaticDecl) |
398 | USEMF(ImportMembers::Nested, privateNormalDecl) |
399 | USEMF(ImportMembers::Nested, privateStaticDecl) |
400 | USEMF(ImportMembers::Nested, ignored) |
401 | |
402 | USEMV(ImportMembers::Nested, StaticField) |
403 | USEMV(ImportMembers::Nested, StaticConstField) |
404 | USEMV(ImportMembers::Nested, StaticConstFieldEqualInit) |
405 | USEMV(ImportMembers::Nested, StaticConstFieldBraceInit) |
406 | USEMV(ImportMembers::Nested, ConstexprField) |
407 | |
408 | |
409 | // Import special member functions. |
410 | struct ImportSpecials { |
411 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportSpecials* @"??0ImportSpecials@@QAE@XZ"(%struct.ImportSpecials* returned) |
412 | // M64-DAG: declare dllimport %struct.ImportSpecials* @"??0ImportSpecials@@QEAA@XZ"(%struct.ImportSpecials* returned) |
413 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN14ImportSpecialsC1Ev(%struct.ImportSpecials*) |
414 | // G64-DAG: declare dllimport void @_ZN14ImportSpecialsC1Ev(%struct.ImportSpecials*) |
415 | __declspec(dllimport) ImportSpecials(); |
416 | |
417 | // M32-DAG: declare dllimport x86_thiscallcc void @"??1ImportSpecials@@QAE@XZ"(%struct.ImportSpecials*) |
418 | // M64-DAG: declare dllimport void @"??1ImportSpecials@@QEAA@XZ"(%struct.ImportSpecials*) |
419 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN14ImportSpecialsD1Ev(%struct.ImportSpecials*) |
420 | // G64-DAG: declare dllimport void @_ZN14ImportSpecialsD1Ev(%struct.ImportSpecials*) |
421 | __declspec(dllimport) ~ImportSpecials(); |
422 | |
423 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportSpecials* @"??0ImportSpecials@@QAE@ABU0@@Z"(%struct.ImportSpecials* returned, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
424 | // M64-DAG: declare dllimport %struct.ImportSpecials* @"??0ImportSpecials@@QEAA@AEBU0@@Z"(%struct.ImportSpecials* returned, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
425 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN14ImportSpecialsC1ERKS_(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
426 | // G64-DAG: declare dllimport void @_ZN14ImportSpecialsC1ERKS_(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
427 | __declspec(dllimport) ImportSpecials(const ImportSpecials&); |
428 | |
429 | // M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportSpecials* @"??4ImportSpecials@@QAEAAU0@ABU0@@Z"(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
430 | // M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportSpecials* @"??4ImportSpecials@@QEAAAEAU0@AEBU0@@Z"(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
431 | // G32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportSpecials* @_ZN14ImportSpecialsaSERKS_(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
432 | // G64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportSpecials* @_ZN14ImportSpecialsaSERKS_(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
433 | __declspec(dllimport) ImportSpecials& operator=(const ImportSpecials&); |
434 | |
435 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportSpecials* @"??0ImportSpecials@@QAE@$$QAU0@@Z"(%struct.ImportSpecials* returned, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
436 | // M64-DAG: declare dllimport %struct.ImportSpecials* @"??0ImportSpecials@@QEAA@$$QEAU0@@Z"(%struct.ImportSpecials* returned, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
437 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN14ImportSpecialsC1EOS_(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
438 | // G64-DAG: declare dllimport void @_ZN14ImportSpecialsC1EOS_(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
439 | __declspec(dllimport) ImportSpecials(ImportSpecials&&); |
440 | |
441 | // M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportSpecials* @"??4ImportSpecials@@QAEAAU0@$$QAU0@@Z"(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
442 | // M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportSpecials* @"??4ImportSpecials@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
443 | // G32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportSpecials* @_ZN14ImportSpecialsaSEOS_(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
444 | // G64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportSpecials* @_ZN14ImportSpecialsaSEOS_(%struct.ImportSpecials*, %struct.ImportSpecials* dereferenceable({{[0-9]+}})) |
445 | __declspec(dllimport) ImportSpecials& operator=(ImportSpecials&&); |
446 | }; |
447 | USESPECIALS(ImportSpecials) |
448 | |
449 | |
450 | // Export inline special member functions. |
451 | struct ImportInlineSpecials { |
452 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"??0ImportInlineSpecials@@QAE@XZ"(%struct.ImportInlineSpecials* returned) |
453 | // M64-DAG: declare dllimport %struct.ImportInlineSpecials* @"??0ImportInlineSpecials@@QEAA@XZ"(%struct.ImportInlineSpecials* returned) |
454 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1Ev(%struct.ImportInlineSpecials* %this) |
455 | // G64-DAG: define linkonce_odr dso_local void @_ZN20ImportInlineSpecialsC1Ev(%struct.ImportInlineSpecials* %this) |
456 | // MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"??0ImportInlineSpecials@@QAE@XZ"( |
457 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1Ev( |
458 | __declspec(dllimport) ImportInlineSpecials() {} |
459 | |
460 | // M32-DAG: declare dllimport x86_thiscallcc void @"??1ImportInlineSpecials@@QAE@XZ"(%struct.ImportInlineSpecials*) |
461 | // M64-DAG: declare dllimport void @"??1ImportInlineSpecials@@QEAA@XZ"(%struct.ImportInlineSpecials*) |
462 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsD1Ev(%struct.ImportInlineSpecials* %this) |
463 | // G64-DAG: define linkonce_odr dso_local void @_ZN20ImportInlineSpecialsD1Ev(%struct.ImportInlineSpecials* %this) |
464 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"??1ImportInlineSpecials@@QAE@XZ"( |
465 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsD1Ev( |
466 | __declspec(dllimport) ~ImportInlineSpecials() {} |
467 | |
468 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"??0ImportInlineSpecials@@QAE@ABU0@@Z"(%struct.ImportInlineSpecials* returned, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
469 | // M64-DAG: declare dllimport %struct.ImportInlineSpecials* @"??0ImportInlineSpecials@@QEAA@AEBU0@@Z"(%struct.ImportInlineSpecials* returned, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
470 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1ERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
471 | // G64-DAG: define linkonce_odr dso_local void @_ZN20ImportInlineSpecialsC1ERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
472 | // MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"??0ImportInlineSpecials@@QAE@ABU0@@Z"( |
473 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1ERKS_( |
474 | __declspec(dllimport) inline ImportInlineSpecials(const ImportInlineSpecials&); |
475 | |
476 | // M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"??4ImportInlineSpecials@@QAEAAU0@ABU0@@Z"(%struct.ImportInlineSpecials*, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
477 | // M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"??4ImportInlineSpecials@@QEAAAEAU0@AEBU0@@Z"(%struct.ImportInlineSpecials*, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
478 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
479 | // G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
480 | // MO1-DAG: define available_externally dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"??4ImportInlineSpecials@@QAEAAU0@ABU0@@Z"( |
481 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSERKS_( |
482 | __declspec(dllimport) ImportInlineSpecials& operator=(const ImportInlineSpecials&); |
483 | |
484 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"??0ImportInlineSpecials@@QAE@$$QAU0@@Z"(%struct.ImportInlineSpecials* returned, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
485 | // M64-DAG: declare dllimport %struct.ImportInlineSpecials* @"??0ImportInlineSpecials@@QEAA@$$QEAU0@@Z"(%struct.ImportInlineSpecials* returned, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
486 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1EOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
487 | // G64-DAG: define linkonce_odr dso_local void @_ZN20ImportInlineSpecialsC1EOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
488 | // MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"??0ImportInlineSpecials@@QAE@$$QAU0@@Z"( |
489 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1EOS_( |
490 | __declspec(dllimport) ImportInlineSpecials(ImportInlineSpecials&&) {} |
491 | |
492 | // M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"??4ImportInlineSpecials@@QAEAAU0@$$QAU0@@Z"(%struct.ImportInlineSpecials*, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
493 | // M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"??4ImportInlineSpecials@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ImportInlineSpecials*, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
494 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSEOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
495 | // G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSEOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}})) |
496 | // MO1-DAG: define available_externally dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"??4ImportInlineSpecials@@QAEAAU0@$$QAU0@@Z"( |
497 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSEOS_( |
498 | __declspec(dllimport) ImportInlineSpecials& operator=(ImportInlineSpecials&&) { return *this; } |
499 | }; |
500 | ImportInlineSpecials::ImportInlineSpecials(const ImportInlineSpecials&) {} |
501 | inline ImportInlineSpecials& ImportInlineSpecials::operator=(const ImportInlineSpecials&) { return *this; } |
502 | USESPECIALS(ImportInlineSpecials) |
503 | |
504 | |
505 | // Import defaulted member functions. |
506 | struct ImportDefaulted { |
507 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportDefaulted* @"??0ImportDefaulted@@QAE@XZ"(%struct.ImportDefaulted* returned) |
508 | // M64-DAG: declare dllimport %struct.ImportDefaulted* @"??0ImportDefaulted@@QEAA@XZ"(%struct.ImportDefaulted* returned) |
509 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1Ev(%struct.ImportDefaulted* %this) |
510 | // G64-DAG: define linkonce_odr dso_local void @_ZN15ImportDefaultedC1Ev(%struct.ImportDefaulted* %this) |
511 | // MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportDefaulted* @"??0ImportDefaulted@@QAE@XZ"(%struct.ImportDefaulted* returned %this) |
512 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1Ev(%struct.ImportDefaulted* %this) |
513 | __declspec(dllimport) ImportDefaulted() = default; |
514 | |
515 | // M32-DAG: declare dllimport x86_thiscallcc void @"??1ImportDefaulted@@QAE@XZ"(%struct.ImportDefaulted*) |
516 | // M64-DAG: declare dllimport void @"??1ImportDefaulted@@QEAA@XZ"(%struct.ImportDefaulted*) |
517 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedD1Ev(%struct.ImportDefaulted* %this) |
518 | // G64-DAG: define linkonce_odr dso_local void @_ZN15ImportDefaultedD1Ev(%struct.ImportDefaulted* %this) |
519 | // MO1-DAG: define available_externally dllimport x86_thiscallcc void @"??1ImportDefaulted@@QAE@XZ"(%struct.ImportDefaulted* %this) |
520 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedD1Ev(%struct.ImportDefaulted* %this) |
521 | __declspec(dllimport) ~ImportDefaulted() = default; |
522 | |
523 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportDefaulted* @"??0ImportDefaulted@@QAE@ABU0@@Z"(%struct.ImportDefaulted* returned, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
524 | // M64-DAG: declare dllimport %struct.ImportDefaulted* @"??0ImportDefaulted@@QEAA@AEBU0@@Z"(%struct.ImportDefaulted* returned, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
525 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1ERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
526 | // G64-DAG: define linkonce_odr dso_local void @_ZN15ImportDefaultedC1ERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
527 | // MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportDefaulted* @"??0ImportDefaulted@@QAE@ABU0@@Z"(%struct.ImportDefaulted* returned %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
528 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1ERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
529 | __declspec(dllimport) ImportDefaulted(const ImportDefaulted&) = default; |
530 | |
531 | // M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"??4ImportDefaulted@@QAEAAU0@ABU0@@Z"(%struct.ImportDefaulted*, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
532 | // M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"??4ImportDefaulted@@QEAAAEAU0@AEBU0@@Z"(%struct.ImportDefaulted*, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
533 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
534 | // G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
535 | // MO1-DAG: define available_externally dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"??4ImportDefaulted@@QAEAAU0@ABU0@@Z"(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
536 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
537 | __declspec(dllimport) ImportDefaulted& operator=(const ImportDefaulted&) = default; |
538 | |
539 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportDefaulted* @"??0ImportDefaulted@@QAE@$$QAU0@@Z"(%struct.ImportDefaulted* returned, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
540 | // M64-DAG: declare dllimport %struct.ImportDefaulted* @"??0ImportDefaulted@@QEAA@$$QEAU0@@Z"(%struct.ImportDefaulted* returned, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
541 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1EOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
542 | // G64-DAG: define linkonce_odr dso_local void @_ZN15ImportDefaultedC1EOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
543 | // MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportDefaulted* @"??0ImportDefaulted@@QAE@$$QAU0@@Z"(%struct.ImportDefaulted* returned %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
544 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1EOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
545 | __declspec(dllimport) ImportDefaulted(ImportDefaulted&&) = default; |
546 | |
547 | // M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"??4ImportDefaulted@@QAEAAU0@$$QAU0@@Z"(%struct.ImportDefaulted*, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
548 | // M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"??4ImportDefaulted@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ImportDefaulted*, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
549 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSEOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
550 | // G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSEOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
551 | // MO1-DAG: define available_externally dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"??4ImportDefaulted@@QAEAAU0@$$QAU0@@Z"(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
552 | // GO1-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSEOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}})) |
553 | __declspec(dllimport) ImportDefaulted& operator=(ImportDefaulted&&) = default; |
554 | |
555 | ForceNonTrivial v; // ensure special members are non-trivial |
556 | }; |
557 | USESPECIALS(ImportDefaulted) |
558 | |
559 | |
560 | // Import defaulted member function definitions. |
561 | struct ImportDefaultedDefs { |
562 | __declspec(dllimport) inline ImportDefaultedDefs(); |
563 | __declspec(dllimport) inline ~ImportDefaultedDefs(); |
564 | |
565 | __declspec(dllimport) ImportDefaultedDefs(const ImportDefaultedDefs&); |
566 | __declspec(dllimport) ImportDefaultedDefs& operator=(const ImportDefaultedDefs&); |
567 | |
568 | __declspec(dllimport) ImportDefaultedDefs(ImportDefaultedDefs&&); |
569 | __declspec(dllimport) ImportDefaultedDefs& operator=(ImportDefaultedDefs&&); |
570 | }; |
571 | |
572 | #ifdef MSABI |
573 | // For MinGW, the function will not be dllimport, and we cannot add the attribute now. |
574 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportDefaultedDefs* @"??0ImportDefaultedDefs@@QAE@XZ"(%struct.ImportDefaultedDefs* returned) |
575 | // M64-DAG: declare dllimport %struct.ImportDefaultedDefs* @"??0ImportDefaultedDefs@@QEAA@XZ"(%struct.ImportDefaultedDefs* returned) |
576 | __declspec(dllimport) ImportDefaultedDefs::ImportDefaultedDefs() = default; |
577 | #endif |
578 | |
579 | #ifdef MSABI |
580 | // For MinGW, the function will not be dllimport, and we cannot add the attribute now. |
581 | // M32-DAG: declare dllimport x86_thiscallcc void @"??1ImportDefaultedDefs@@QAE@XZ"(%struct.ImportDefaultedDefs*) |
582 | // M64-DAG: declare dllimport void @"??1ImportDefaultedDefs@@QEAA@XZ"(%struct.ImportDefaultedDefs*) |
583 | __declspec(dllimport) ImportDefaultedDefs::~ImportDefaultedDefs() = default; |
584 | #endif |
585 | |
586 | // M32-DAG: declare dllimport x86_thiscallcc %struct.ImportDefaultedDefs* @"??0ImportDefaultedDefs@@QAE@ABU0@@Z"(%struct.ImportDefaultedDefs* returned, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
587 | // M64-DAG: declare dllimport %struct.ImportDefaultedDefs* @"??0ImportDefaultedDefs@@QEAA@AEBU0@@Z"(%struct.ImportDefaultedDefs* returned, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
588 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN19ImportDefaultedDefsC1ERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
589 | // G64-DAG: define linkonce_odr dso_local void @_ZN19ImportDefaultedDefsC1ERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
590 | inline ImportDefaultedDefs::ImportDefaultedDefs(const ImportDefaultedDefs&) = default; |
591 | |
592 | // M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"??4ImportDefaultedDefs@@QAEAAU0@ABU0@@Z"(%struct.ImportDefaultedDefs*, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
593 | // M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"??4ImportDefaultedDefs@@QEAAAEAU0@AEBU0@@Z"(%struct.ImportDefaultedDefs*, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
594 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
595 | // G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
596 | inline ImportDefaultedDefs& ImportDefaultedDefs::operator=(const ImportDefaultedDefs&) = default; |
597 | |
598 | // M32-DAG: define dso_local dllexport x86_thiscallcc %struct.ImportDefaultedDefs* @"??0ImportDefaultedDefs@@QAE@$$QAU0@@Z"(%struct.ImportDefaultedDefs* returned %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
599 | // M64-DAG: define dso_local dllexport %struct.ImportDefaultedDefs* @"??0ImportDefaultedDefs@@QEAA@$$QEAU0@@Z"(%struct.ImportDefaultedDefs* returned %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
600 | // G32-DAG: define dso_local x86_thiscallcc void @_ZN19ImportDefaultedDefsC1EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
601 | // G64-DAG: define dso_local void @_ZN19ImportDefaultedDefsC1EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
602 | // G32-DAG: define dso_local x86_thiscallcc void @_ZN19ImportDefaultedDefsC2EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
603 | // G64-DAG: define dso_local void @_ZN19ImportDefaultedDefsC2EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
604 | ImportDefaultedDefs::ImportDefaultedDefs(ImportDefaultedDefs&&) = default; // dllimport ignored |
605 | |
606 | // M32-DAG: define dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"??4ImportDefaultedDefs@@QAEAAU0@$$QAU0@@Z"(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
607 | // M64-DAG: define dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"??4ImportDefaultedDefs@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
608 | // G32-DAG: define dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSEOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
609 | // G64-DAG: define dso_local dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSEOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}})) |
610 | ImportDefaultedDefs& ImportDefaultedDefs::operator=(ImportDefaultedDefs&&) = default; // dllimport ignored |
611 | |
612 | USESPECIALS(ImportDefaultedDefs) |
613 | |
614 | |
615 | // Import allocation functions. |
616 | struct ImportAlloc { |
617 | __declspec(dllimport) void* operator new(__SIZE_TYPE__); |
618 | __declspec(dllimport) void* operator new[](__SIZE_TYPE__); |
619 | __declspec(dllimport) void operator delete(void*); |
620 | __declspec(dllimport) void operator delete[](void*); |
621 | }; |
622 | |
623 | // M32-DAG: declare dllimport i8* @"??2ImportAlloc@@SAPAXI@Z"(i32) |
624 | // M64-DAG: declare dllimport i8* @"??2ImportAlloc@@SAPEAX_K@Z"(i64) |
625 | // G32-DAG: declare dllimport i8* @_ZN11ImportAllocnwEj(i32) |
626 | // G64-DAG: declare dllimport i8* @_ZN11ImportAllocnwEy(i64) |
627 | void UNIQ(use)() { new ImportAlloc(); } |
628 | |
629 | // M32-DAG: declare dllimport i8* @"??_UImportAlloc@@SAPAXI@Z"(i32) |
630 | // M64-DAG: declare dllimport i8* @"??_UImportAlloc@@SAPEAX_K@Z"(i64) |
631 | // G32-DAG: declare dllimport i8* @_ZN11ImportAllocnaEj(i32) |
632 | // G64-DAG: declare dllimport i8* @_ZN11ImportAllocnaEy(i64) |
633 | void UNIQ(use)() { new ImportAlloc[1]; } |
634 | |
635 | // M32-DAG: declare dllimport void @"??3ImportAlloc@@SAXPAX@Z"(i8*) |
636 | // M64-DAG: declare dllimport void @"??3ImportAlloc@@SAXPEAX@Z"(i8*) |
637 | // G32-DAG: declare dllimport void @_ZN11ImportAllocdlEPv(i8*) |
638 | // G64-DAG: declare dllimport void @_ZN11ImportAllocdlEPv(i8*) |
639 | void UNIQ(use)(ImportAlloc* ptr) { delete ptr; } |
640 | |
641 | // M32-DAG: declare dllimport void @"??_VImportAlloc@@SAXPAX@Z"(i8*) |
642 | // M64-DAG: declare dllimport void @"??_VImportAlloc@@SAXPEAX@Z"(i8*) |
643 | // G32-DAG: declare dllimport void @_ZN11ImportAllocdaEPv(i8*) |
644 | // G64-DAG: declare dllimport void @_ZN11ImportAllocdaEPv(i8*) |
645 | void UNIQ(use)(ImportAlloc* ptr) { delete[] ptr; } |
646 | |
647 | |
648 | //===----------------------------------------------------------------------===// |
649 | // Class member templates |
650 | //===----------------------------------------------------------------------===// |
651 | |
652 | struct MemFunTmpl { |
653 | template<typename T> void normalDef() {} |
654 | template<typename T> __declspec(dllimport) void importedNormal() {} |
655 | template<typename T> static void staticDef() {} |
656 | template<typename T> __declspec(dllimport) static void importedStatic() {} |
657 | }; |
658 | |
659 | // Import implicit instantiation of an imported member function template. |
660 | // M32-DAG: declare dllimport x86_thiscallcc void @"??$importedNormal@UImplicitInst_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
661 | // M64-DAG: declare dllimport void @"??$importedNormal@UImplicitInst_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
662 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ImplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this) |
663 | // G64-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl14importedNormalI21ImplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this) |
664 | USEMF(MemFunTmpl, importedNormal<ImplicitInst_Imported>) |
665 | |
666 | // MSC-DAG: declare dllimport void @"??$importedStatic@UImplicitInst_Imported@@@MemFunTmpl@@SAXXZ"() |
667 | // GNU-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl14importedStaticI21ImplicitInst_ImportedEEvv() |
668 | USE(MemFunTmpl::importedStatic<ImplicitInst_Imported>) |
669 | |
670 | |
671 | // Import explicit instantiation declaration of an imported member function |
672 | // template. |
673 | // M32-DAG: declare dllimport x86_thiscallcc void @"??$importedNormal@UExplicitDecl_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
674 | // M64-DAG: declare dllimport void @"??$importedNormal@UExplicitDecl_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
675 | // G32-DAG: declare dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*) |
676 | // G64-DAG: declare dso_local void @_ZN10MemFunTmpl14importedNormalI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*) |
677 | extern template void MemFunTmpl::importedNormal<ExplicitDecl_Imported>(); |
678 | USEMF(MemFunTmpl, importedNormal<ExplicitDecl_Imported>) |
679 | |
680 | // MSC-DAG: declare dllimport void @"??$importedStatic@UExplicitDecl_Imported@@@MemFunTmpl@@SAXXZ"() |
681 | // GNU-DAG: declare dso_local void @_ZN10MemFunTmpl14importedStaticI21ExplicitDecl_ImportedEEvv() |
682 | extern template void MemFunTmpl::importedStatic<ExplicitDecl_Imported>(); |
683 | USE(MemFunTmpl::importedStatic<ExplicitDecl_Imported>) |
684 | |
685 | |
686 | // Import explicit instantiation definition of an imported member function |
687 | // template. |
688 | // M32-DAG: declare dllimport x86_thiscallcc void @"??$importedNormal@UExplicitInst_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
689 | // M64-DAG: declare dllimport void @"??$importedNormal@UExplicitInst_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
690 | // G32-DAG: define weak_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this) |
691 | // G64-DAG: define weak_odr dso_local void @_ZN10MemFunTmpl14importedNormalI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this) |
692 | template void MemFunTmpl::importedNormal<ExplicitInst_Imported>(); |
693 | USEMF(MemFunTmpl, importedNormal<ExplicitInst_Imported>) |
694 | |
695 | // MSC-DAG: declare dllimport void @"??$importedStatic@UExplicitInst_Imported@@@MemFunTmpl@@SAXXZ"() |
696 | // GNU-DAG: define weak_odr dso_local void @_ZN10MemFunTmpl14importedStaticI21ExplicitInst_ImportedEEvv() |
697 | template void MemFunTmpl::importedStatic<ExplicitInst_Imported>(); |
698 | USE(MemFunTmpl::importedStatic<ExplicitInst_Imported>) |
699 | |
700 | |
701 | // Import specialization of an imported member function template. |
702 | // M32-DAG: declare dllimport x86_thiscallcc void @"??$importedNormal@UExplicitSpec_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
703 | // M64-DAG: declare dllimport void @"??$importedNormal@UExplicitSpec_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
704 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ExplicitSpec_ImportedEEvv(%struct.MemFunTmpl*) |
705 | // G64-DAG: declare dllimport void @_ZN10MemFunTmpl14importedNormalI21ExplicitSpec_ImportedEEvv(%struct.MemFunTmpl*) |
706 | template<> __declspec(dllimport) void MemFunTmpl::importedNormal<ExplicitSpec_Imported>(); |
707 | USEMF(MemFunTmpl, importedNormal<ExplicitSpec_Imported>) |
708 | |
709 | // M32-DAG-FIXME: declare dllimport x86_thiscallcc void @"??$importedNormal@UExplicitSpec_Def_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
710 | // M64-DAG-FIXME: declare dllimport void @"??$importedNormal@UExplicitSpec_Def_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
711 | #ifdef MSABI |
712 | //template<> __declspec(dllimport) void MemFunTmpl::importedNormal<ExplicitSpec_Def_Imported>() {} |
713 | //USEMF(MemFunTmpl, importedNormal<ExplicitSpec_Def_Imported>) |
714 | #endif |
715 | |
716 | // M32-DAG: declare dllimport x86_thiscallcc void @"??$importedNormal@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
717 | // M64-DAG: declare dllimport void @"??$importedNormal@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
718 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this) |
719 | // G64-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl14importedNormalI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this) |
720 | template<> __declspec(dllimport) inline void MemFunTmpl::importedNormal<ExplicitSpec_InlineDef_Imported>() {} |
721 | USEMF(MemFunTmpl, importedNormal<ExplicitSpec_InlineDef_Imported>) |
722 | |
723 | |
724 | // MSC-DAG: declare dllimport void @"??$importedStatic@UExplicitSpec_Imported@@@MemFunTmpl@@SAXXZ"() |
725 | // GNU-DAG: declare dllimport void @_ZN10MemFunTmpl14importedStaticI21ExplicitSpec_ImportedEEvv() |
726 | template<> __declspec(dllimport) void MemFunTmpl::importedStatic<ExplicitSpec_Imported>(); |
727 | USE(MemFunTmpl::importedStatic<ExplicitSpec_Imported>) |
728 | |
729 | // MSC-DAG-FIXME: declare dllimport void @"??$importedStatic@UExplicitSpec_Def_Imported@@@MemFunTmpl@@SAXXZ"() |
730 | #ifdef MSABI |
731 | //template<> __declspec(dllimport) void MemFunTmpl::importedStatic<ExplicitSpec_Def_Imported>() {} |
732 | //USE(MemFunTmpl::importedStatic<ExplicitSpec_Def_Imported>) |
733 | #endif |
734 | |
735 | // MSC-DAG: declare dllimport void @"??$importedStatic@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@SAXXZ"() |
736 | // GNU-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl14importedStaticI31ExplicitSpec_InlineDef_ImportedEEvv() |
737 | template<> __declspec(dllimport) inline void MemFunTmpl::importedStatic<ExplicitSpec_InlineDef_Imported>() {} |
738 | USE(MemFunTmpl::importedStatic<ExplicitSpec_InlineDef_Imported>) |
739 | |
740 | |
741 | // Not importing specialization of an imported member function template without |
742 | // explicit dllimport. |
743 | // M32-DAG: define dso_local x86_thiscallcc void @"??$importedNormal@UExplicitSpec_NotImported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this) |
744 | // M64-DAG: define dso_local void @"??$importedNormal@UExplicitSpec_NotImported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this) |
745 | // G32-DAG: define dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI24ExplicitSpec_NotImportedEEvv(%struct.MemFunTmpl* %this) |
746 | // G64-DAG: define dso_local void @_ZN10MemFunTmpl14importedNormalI24ExplicitSpec_NotImportedEEvv(%struct.MemFunTmpl* %this) |
747 | template<> void MemFunTmpl::importedNormal<ExplicitSpec_NotImported>() {} |
748 | USEMF(MemFunTmpl, importedNormal<ExplicitSpec_NotImported>) |
749 | |
750 | // MSC-DAG: define dso_local void @"??$importedStatic@UExplicitSpec_NotImported@@@MemFunTmpl@@SAXXZ"() |
751 | // GNU-DAG: define dso_local void @_ZN10MemFunTmpl14importedStaticI24ExplicitSpec_NotImportedEEvv() |
752 | template<> void MemFunTmpl::importedStatic<ExplicitSpec_NotImported>() {} |
753 | USE(MemFunTmpl::importedStatic<ExplicitSpec_NotImported>) |
754 | |
755 | |
756 | // Import explicit instantiation declaration of a non-imported member function |
757 | // template. |
758 | // M32-DAG: declare dllimport x86_thiscallcc void @"??$normalDef@UExplicitDecl_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
759 | // M64-DAG: declare dllimport void @"??$normalDef@UExplicitDecl_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
760 | // G32-DAG: declare dso_local x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*) |
761 | // G64-DAG: declare dso_local void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*) |
762 | extern template __declspec(dllimport) void MemFunTmpl::normalDef<ExplicitDecl_Imported>(); |
763 | USEMF(MemFunTmpl, normalDef<ExplicitDecl_Imported>) |
764 | |
765 | // MSC-DAG: declare dllimport void @"??$staticDef@UExplicitDecl_Imported@@@MemFunTmpl@@SAXXZ"() |
766 | // GNU-DAG: declare dso_local void @_ZN10MemFunTmpl9staticDefI21ExplicitDecl_ImportedEEvv() |
767 | extern template __declspec(dllimport) void MemFunTmpl::staticDef<ExplicitDecl_Imported>(); |
768 | USE(MemFunTmpl::staticDef<ExplicitDecl_Imported>) |
769 | |
770 | |
771 | // Import explicit instantiation definition of a non-imported member function |
772 | // template. |
773 | // M32-DAG: declare dllimport x86_thiscallcc void @"??$normalDef@UExplicitInst_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
774 | // M64-DAG: declare dllimport void @"??$normalDef@UExplicitInst_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
775 | // G32-DAG: define weak_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this) |
776 | // G64-DAG: define weak_odr dso_local void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this) |
777 | template __declspec(dllimport) void MemFunTmpl::normalDef<ExplicitInst_Imported>(); |
778 | USEMF(MemFunTmpl, normalDef<ExplicitInst_Imported>) |
779 | |
780 | // MSC-DAG: declare dllimport void @"??$staticDef@UExplicitInst_Imported@@@MemFunTmpl@@SAXXZ"() |
781 | // GNU-DAG: define weak_odr dso_local void @_ZN10MemFunTmpl9staticDefI21ExplicitInst_ImportedEEvv() |
782 | template __declspec(dllimport) void MemFunTmpl::staticDef<ExplicitInst_Imported>(); |
783 | USE(MemFunTmpl::staticDef<ExplicitInst_Imported>) |
784 | |
785 | |
786 | // Import specialization of a non-imported member function template. |
787 | // M32-DAG: declare dllimport x86_thiscallcc void @"??$normalDef@UExplicitSpec_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
788 | // M64-DAG: declare dllimport void @"??$normalDef@UExplicitSpec_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
789 | // G32-DAG: declare dllimport x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitSpec_ImportedEEvv(%struct.MemFunTmpl*) |
790 | // G64-DAG: declare dllimport void @_ZN10MemFunTmpl9normalDefI21ExplicitSpec_ImportedEEvv(%struct.MemFunTmpl*) |
791 | template<> __declspec(dllimport) void MemFunTmpl::normalDef<ExplicitSpec_Imported>(); |
792 | USEMF(MemFunTmpl, normalDef<ExplicitSpec_Imported>) |
793 | |
794 | // M32-DAG-FIXME: declare dllimport x86_thiscallcc void @"??$normalDef@UExplicitSpec_Def_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
795 | // M64-DAG-FIXME: declare dllimport void @"??$normalDef@UExplicitSpec_Def_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
796 | #ifdef MSABI |
797 | //template<> __declspec(dllimport) void MemFunTmpl::normalDef<ExplicitSpec_Def_Imported>() {} |
798 | //USEMF(MemFunTmpl, normalDef<ExplicitSpec_Def_Imported>) |
799 | #endif |
800 | |
801 | // M32-DAG: declare dllimport x86_thiscallcc void @"??$normalDef@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*) |
802 | // M64-DAG: declare dllimport void @"??$normalDef@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*) |
803 | // G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this) |
804 | // G64-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this) |
805 | template<> __declspec(dllimport) inline void MemFunTmpl::normalDef<ExplicitSpec_InlineDef_Imported>() {} |
806 | USEMF(MemFunTmpl, normalDef<ExplicitSpec_InlineDef_Imported>) |
807 | |
808 | |
809 | // MSC-DAG: declare dllimport void @"??$staticDef@UExplicitSpec_Imported@@@MemFunTmpl@@SAXXZ"() |
810 | // GNU-DAG: declare dllimport void @_ZN10MemFunTmpl9staticDefI21ExplicitSpec_ImportedEEvv() |
811 | template<> __declspec(dllimport) void MemFunTmpl::staticDef<ExplicitSpec_Imported>(); |
812 | USE(MemFunTmpl::staticDef<ExplicitSpec_Imported>) |
813 | |
814 | // MSC-DAG-FIXME: declare dllimport void @"??$staticDef@UExplicitSpec_Def_Imported@@@MemFunTmpl@@SAXXZ"() |
815 | #ifdef MSABI |
816 | //template<> __declspec(dllimport) void MemFunTmpl::staticDef<ExplicitSpec_Def_Imported>() {} |
817 | //USE(MemFunTmpl::staticDef<ExplicitSpec_Def_Imported>) |
818 | #endif |
819 | |
820 | // MSC-DAG: declare dllimport void @"??$staticDef@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@SAXXZ"() |
821 | // GNU-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl9staticDefI31ExplicitSpec_InlineDef_ImportedEEvv() |
822 | template<> __declspec(dllimport) inline void MemFunTmpl::staticDef<ExplicitSpec_InlineDef_Imported>() {} |
823 | USE(MemFunTmpl::staticDef<ExplicitSpec_InlineDef_Imported>) |
824 | |
825 | |
826 | |
827 | struct MemVarTmpl { |
828 | template<typename T> static const int StaticVar = 1; |
829 | template<typename T> __declspec(dllimport) static const int ImportedStaticVar = 1; |
830 | }; |
831 | |
832 | // Import implicit instantiation of an imported member variable template. |
833 | // MSC-DAG: @"??$ImportedStaticVar@UImplicitInst_Imported@@@MemVarTmpl@@2HB" = available_externally dllimport constant i32 1, align 4 |
834 | // GNU-DAG: @_ZN10MemVarTmpl17ImportedStaticVarI21ImplicitInst_ImportedEE = external dllimport constant i32 |
835 | USEMV(MemVarTmpl, ImportedStaticVar<ImplicitInst_Imported>) |
836 | |
837 | // Import explicit instantiation declaration of an imported member variable |
838 | // template. |
839 | // MSC-DAG: @"??$ImportedStaticVar@UExplicitDecl_Imported@@@MemVarTmpl@@2HB" = available_externally dllimport constant i32 1 |
840 | // GNU-DAG: @_ZN10MemVarTmpl17ImportedStaticVarI21ExplicitDecl_ImportedEE = external dllimport constant i32 |
841 | extern template const int MemVarTmpl::ImportedStaticVar<ExplicitDecl_Imported>; |
842 | USEMV(MemVarTmpl, ImportedStaticVar<ExplicitDecl_Imported>) |
843 | |
844 | // An explicit instantiation definition of an imported member variable template |
845 | // cannot be imported because the template must be defined which is illegal. The |
846 | // in-class initializer does not count. |
847 | |
848 | // Import specialization of an imported member variable template. |
849 | // MSC-DAG: @"??$ImportedStaticVar@UExplicitSpec_Imported@@@MemVarTmpl@@2HB" = external dllimport constant i32 |
850 | // GNU-DAG: @_ZN10MemVarTmpl17ImportedStaticVarI21ExplicitSpec_ImportedEE = external dllimport constant i32 |
851 | template<> __declspec(dllimport) const int MemVarTmpl::ImportedStaticVar<ExplicitSpec_Imported>; |
852 | USEMV(MemVarTmpl, ImportedStaticVar<ExplicitSpec_Imported>) |
853 | |
854 | // Not importing specialization of a member variable template without explicit |
855 | // dllimport. |
856 | // MSC-DAG: @"??$ImportedStaticVar@UExplicitSpec_NotImported@@@MemVarTmpl@@2HB" = external dso_local constant i32 |
857 | // GNU-DAG: @_ZN10MemVarTmpl17ImportedStaticVarI24ExplicitSpec_NotImportedEE = external constant i32 |
858 | template<> const int MemVarTmpl::ImportedStaticVar<ExplicitSpec_NotImported>; |
859 | USEMV(MemVarTmpl, ImportedStaticVar<ExplicitSpec_NotImported>) |
860 | |
861 | |
862 | // Import explicit instantiation declaration of a non-imported member variable |
863 | // template. |
864 | // MSC-DAG: @"??$StaticVar@UExplicitDecl_Imported@@@MemVarTmpl@@2HB" = available_externally dllimport constant i32 1 |
865 | // GNU-DAG: @_ZN10MemVarTmpl9StaticVarI21ExplicitDecl_ImportedEE = external dllimport constant i32 |
866 | extern template __declspec(dllimport) const int MemVarTmpl::StaticVar<ExplicitDecl_Imported>; |
867 | USEMV(MemVarTmpl, StaticVar<ExplicitDecl_Imported>) |
868 | |
869 | // An explicit instantiation definition of a non-imported member variable template |
870 | // cannot be imported because the template must be defined which is illegal. The |
871 | // in-class initializer does not count. |
872 | |
873 | // Import specialization of a non-imported member variable template. |
874 | // MSC-DAG: @"??$StaticVar@UExplicitSpec_Imported@@@MemVarTmpl@@2HB" = external dllimport constant i32 |
875 | // GNU-DAG: @_ZN10MemVarTmpl9StaticVarI21ExplicitSpec_ImportedEE = external dllimport constant i32 |
876 | template<> __declspec(dllimport) const int MemVarTmpl::StaticVar<ExplicitSpec_Imported>; |
877 | USEMV(MemVarTmpl, StaticVar<ExplicitSpec_Imported>) |
878 | |