@@ -155,93 +155,75 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
155
155
// CHECK-NEXT: RTLIB::Libcall Func;
156
156
// CHECK-NEXT: RTLIB::LibcallImpl Impl;
157
157
// CHECK-NEXT: };
158
+ // CHECK-NEXT: auto setLibcallsImpl = [this](
159
+ // CHECK-NEXT: ArrayRef<LibcallImplPair> Libcalls,
160
+ // CHECK-NEXT: std::optional<llvm::CallingConv::ID> CC = {})
161
+ // CHECK-NEXT: {
162
+ // CHECK-NEXT: for (const auto [Func, Impl] : Libcalls) {
163
+ // CHECK-NEXT: setLibcallImpl(Func, Impl);
164
+ // CHECK-NEXT: if (CC)
165
+ // CHECK-NEXT: setLibcallImplCallingConv(Impl, *CC);
166
+ // CHECK-NEXT: }
167
+ // CHECK-NEXT: };
158
168
// CHECK-EMPTY:
159
169
// CHECK-NEXT: if (TT.getArch() == Triple::blah) {
160
- // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
170
+ // CHECK-NEXT: setLibcallsImpl( {
161
171
// CHECK-NEXT: {RTLIB::BZERO, RTLIB::bzero}, // bzero
162
172
// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::calloc}, // calloc
163
173
// CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::sqrtl_f128}, // sqrtl
164
- // CHECK-NEXT: };
165
- // CHECK-EMPTY:
166
- // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
167
- // CHECK-NEXT: setLibcallImpl(Func, Impl);
168
- // CHECK-NEXT: }
174
+ // CHECK-NEXT: });
169
175
// CHECK-EMPTY:
170
176
// CHECK-NEXT: if (TT.hasCompilerRT()) {
171
- // CHECK-NEXT: static const LibcallImplPair LibraryCalls_hasCompilerRT[] = {
177
+ // CHECK-NEXT: setLibcallsImpl( {
172
178
// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::__ashlsi3}, // __ashlsi3
173
179
// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::__lshrdi3}, // __lshrdi3
174
- // CHECK-NEXT: };
175
- // CHECK-EMPTY:
176
- // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_hasCompilerRT) {
177
- // CHECK-NEXT: setLibcallImpl(Func, Impl);
178
- // CHECK-NEXT: }
180
+ // CHECK-NEXT: });
179
181
// CHECK-EMPTY:
180
182
// CHECK-NEXT: }
181
183
// CHECK-EMPTY:
182
184
// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
183
- // CHECK-NEXT: static const LibcallImplPair LibraryCalls_isBarOS[] = {
185
+ // CHECK-NEXT: setLibcallsImpl( {
184
186
// CHECK-NEXT: {RTLIB::MEMSET, RTLIB::___memset}, // ___memset
185
- // CHECK-NEXT: };
186
- // CHECK-EMPTY:
187
- // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_isBarOS) {
188
- // CHECK-NEXT: setLibcallImpl(Func, Impl);
189
- // CHECK-NEXT: }
187
+ // CHECK-NEXT: });
190
188
// CHECK-EMPTY:
191
189
// CHECK-NEXT: }
192
190
// CHECK-EMPTY:
193
191
// CHECK-NEXT: return;
194
192
// CHECK-NEXT: }
195
193
// CHECK-EMPTY:
196
194
// CHECK-NEXT: if (TT.getArch() == Triple::buzz) {
197
- // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
195
+ // CHECK-NEXT: setLibcallsImpl( {
198
196
// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::__ashlsi3}, // __ashlsi3
199
197
// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::sqrtl_f80}, // sqrtl
200
198
// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::__lshrdi3}, // __lshrdi3
201
- // CHECK-NEXT: };
202
- // CHECK-EMPTY:
203
- // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
204
- // CHECK-NEXT: setLibcallImpl(Func, Impl);
205
- // CHECK-NEXT: }
199
+ // CHECK-NEXT: });
206
200
// CHECK-EMPTY:
207
201
// CHECK-NEXT: return;
208
202
// CHECK-NEXT: }
209
203
// CHECK-EMPTY:
210
204
// CHECK-NEXT: if (TT.getArch() == Triple::foo) {
211
- // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
205
+ // CHECK-NEXT: setLibcallsImpl( {
212
206
// CHECK-NEXT: {RTLIB::BZERO, RTLIB::bzero}, // bzero
213
207
// CHECK-NEXT: {RTLIB::SQRT_F128, RTLIB::sqrtl_f128}, // sqrtl
214
- // CHECK-NEXT: };
215
- // CHECK-EMPTY:
216
- // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
217
- // CHECK-NEXT: setLibcallImpl(Func, Impl);
218
- // CHECK-NEXT: }
208
+ // CHECK-NEXT: });
219
209
// CHECK-EMPTY:
220
210
// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
221
- // CHECK-NEXT: static const LibcallImplPair LibraryCalls_isBarOS[] = {
211
+ // CHECK-NEXT: setLibcallsImpl( {
222
212
// CHECK-NEXT: {RTLIB::MEMSET, RTLIB::___memset}, // ___memset
223
- // CHECK-NEXT: };
224
- // CHECK-EMPTY:
225
- // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls_isBarOS) {
226
- // CHECK-NEXT: setLibcallImpl(Func, Impl);
227
- // CHECK-NEXT: }
213
+ // CHECK-NEXT: });
228
214
// CHECK-EMPTY:
229
215
// CHECK-NEXT: }
230
216
// CHECK-EMPTY:
231
217
// CHECK-NEXT: return;
232
218
// CHECK-NEXT: }
233
219
// CHECK-EMPTY:
234
220
// CHECK-NEXT: if (TT.getArch() == Triple::simple) {
235
- // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
221
+ // CHECK-NEXT: setLibcallsImpl( {
236
222
// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::calloc}, // calloc
237
223
// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::__ashlsi3}, // __ashlsi3
238
224
// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::sqrtl_f80}, // sqrtl
239
225
// CHECK-NEXT: {RTLIB::SRL_I64, RTLIB::__lshrdi3}, // __lshrdi3
240
- // CHECK-NEXT: };
241
- // CHECK-EMPTY:
242
- // CHECK-NEXT: for (const auto [Func, Impl] : LibraryCalls) {
243
- // CHECK-NEXT: setLibcallImpl(Func, Impl);
244
- // CHECK-NEXT: }
226
+ // CHECK-NEXT: });
245
227
// CHECK-EMPTY:
246
228
// CHECK-NEXT: return;
247
229
// CHECK-NEXT: }
0 commit comments