@@ -155,93 +155,75 @@ def BlahLibrary : SystemRuntimeLibrary<isBlahArch, (add calloc, LibraryWithCondi
155155// CHECK-NEXT: RTLIB::Libcall Func;
156156// CHECK-NEXT: RTLIB::LibcallImpl Impl;
157157// 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: };
158168// CHECK-EMPTY:
159169// CHECK-NEXT: if (TT.getArch() == Triple::blah) {
160- // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
170+ // CHECK-NEXT: setLibcallsImpl( {
161171// CHECK-NEXT: {RTLIB::BZERO, RTLIB::bzero}, // bzero
162172// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::calloc}, // calloc
163173// 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: });
169175// CHECK-EMPTY:
170176// CHECK-NEXT: if (TT.hasCompilerRT()) {
171- // CHECK-NEXT: static const LibcallImplPair LibraryCalls_hasCompilerRT[] = {
177+ // CHECK-NEXT: setLibcallsImpl( {
172178// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::__ashlsi3}, // __ashlsi3
173179// 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: });
179181// CHECK-EMPTY:
180182// CHECK-NEXT: }
181183// CHECK-EMPTY:
182184// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
183- // CHECK-NEXT: static const LibcallImplPair LibraryCalls_isBarOS[] = {
185+ // CHECK-NEXT: setLibcallsImpl( {
184186// 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: });
190188// CHECK-EMPTY:
191189// CHECK-NEXT: }
192190// CHECK-EMPTY:
193191// CHECK-NEXT: return;
194192// CHECK-NEXT: }
195193// CHECK-EMPTY:
196194// CHECK-NEXT: if (TT.getArch() == Triple::buzz) {
197- // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
195+ // CHECK-NEXT: setLibcallsImpl( {
198196// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::__ashlsi3}, // __ashlsi3
199197// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::sqrtl_f80}, // sqrtl
200198// 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: });
206200// CHECK-EMPTY:
207201// CHECK-NEXT: return;
208202// CHECK-NEXT: }
209203// CHECK-EMPTY:
210204// CHECK-NEXT: if (TT.getArch() == Triple::foo) {
211- // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
205+ // CHECK-NEXT: setLibcallsImpl( {
212206// CHECK-NEXT: {RTLIB::BZERO, RTLIB::bzero}, // bzero
213207// 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: });
219209// CHECK-EMPTY:
220210// CHECK-NEXT: if (TT.getOS() == Triple::bar) {
221- // CHECK-NEXT: static const LibcallImplPair LibraryCalls_isBarOS[] = {
211+ // CHECK-NEXT: setLibcallsImpl( {
222212// 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: });
228214// CHECK-EMPTY:
229215// CHECK-NEXT: }
230216// CHECK-EMPTY:
231217// CHECK-NEXT: return;
232218// CHECK-NEXT: }
233219// CHECK-EMPTY:
234220// CHECK-NEXT: if (TT.getArch() == Triple::simple) {
235- // CHECK-NEXT: static const LibcallImplPair LibraryCalls[] = {
221+ // CHECK-NEXT: setLibcallsImpl( {
236222// CHECK-NEXT: {RTLIB::CALLOC, RTLIB::calloc}, // calloc
237223// CHECK-NEXT: {RTLIB::SHL_I32, RTLIB::__ashlsi3}, // __ashlsi3
238224// CHECK-NEXT: {RTLIB::SQRT_F80, RTLIB::sqrtl_f80}, // sqrtl
239225// 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: });
245227// CHECK-EMPTY:
246228// CHECK-NEXT: return;
247229// CHECK-NEXT: }
0 commit comments