Skip to content

Commit b618424

Browse files
committed
AVR: Move runtime libcall name setting out of TargetLowering
RuntimeLibcallInfo needs to be accurate outside of codegen contexts.
1 parent 2622e6b commit b618424

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

llvm/lib/IR/RuntimeLibcalls.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,24 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT) {
240240
setLibcallName(RTLIB::UREM_I8, nullptr);
241241
setLibcallName(RTLIB::UREM_I16, nullptr);
242242
setLibcallName(RTLIB::UREM_I32, nullptr);
243+
244+
// Division and modulus rtlib functions
245+
setLibcallName(RTLIB::SDIVREM_I8, "__divmodqi4");
246+
setLibcallName(RTLIB::SDIVREM_I16, "__divmodhi4");
247+
setLibcallName(RTLIB::SDIVREM_I32, "__divmodsi4");
248+
setLibcallName(RTLIB::UDIVREM_I8, "__udivmodqi4");
249+
setLibcallName(RTLIB::UDIVREM_I16, "__udivmodhi4");
250+
setLibcallName(RTLIB::UDIVREM_I32, "__udivmodsi4");
251+
252+
// Several of the runtime library functions use a special calling conv
253+
setLibcallCallingConv(RTLIB::SDIVREM_I8, CallingConv::AVR_BUILTIN);
254+
setLibcallCallingConv(RTLIB::SDIVREM_I16, CallingConv::AVR_BUILTIN);
255+
setLibcallCallingConv(RTLIB::UDIVREM_I8, CallingConv::AVR_BUILTIN);
256+
setLibcallCallingConv(RTLIB::UDIVREM_I16, CallingConv::AVR_BUILTIN);
257+
258+
// Trigonometric rtlib functions
259+
setLibcallName(RTLIB::SIN_F32, "sin");
260+
setLibcallName(RTLIB::COS_F32, "cos");
243261
}
244262

245263
if (!TT.isWasm()) {

llvm/lib/Target/AVR/AVRISelLowering.cpp

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -198,24 +198,6 @@ AVRTargetLowering::AVRTargetLowering(const AVRTargetMachine &TM,
198198
// improvements in how we treat 16-bit "registers" to be feasible.
199199
}
200200

201-
// Division and modulus rtlib functions
202-
setLibcallName(RTLIB::SDIVREM_I8, "__divmodqi4");
203-
setLibcallName(RTLIB::SDIVREM_I16, "__divmodhi4");
204-
setLibcallName(RTLIB::SDIVREM_I32, "__divmodsi4");
205-
setLibcallName(RTLIB::UDIVREM_I8, "__udivmodqi4");
206-
setLibcallName(RTLIB::UDIVREM_I16, "__udivmodhi4");
207-
setLibcallName(RTLIB::UDIVREM_I32, "__udivmodsi4");
208-
209-
// Several of the runtime library functions use a special calling conv
210-
setLibcallCallingConv(RTLIB::SDIVREM_I8, CallingConv::AVR_BUILTIN);
211-
setLibcallCallingConv(RTLIB::SDIVREM_I16, CallingConv::AVR_BUILTIN);
212-
setLibcallCallingConv(RTLIB::UDIVREM_I8, CallingConv::AVR_BUILTIN);
213-
setLibcallCallingConv(RTLIB::UDIVREM_I16, CallingConv::AVR_BUILTIN);
214-
215-
// Trigonometric rtlib functions
216-
setLibcallName(RTLIB::SIN_F32, "sin");
217-
setLibcallName(RTLIB::COS_F32, "cos");
218-
219201
setMinFunctionAlignment(Align(2));
220202
setMinimumJumpTableEntries(UINT_MAX);
221203
}

0 commit comments

Comments
 (0)