Skip to content

Commit 4949a79

Browse files
authored
X86: Start moving setLibcallName calls out of TargetLowering (#142539)
1 parent 878badc commit 4949a79

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

llvm/lib/IR/RuntimeLibcalls.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,26 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT) {
229229
setLibcallName(RTLIB::POWI_F64, nullptr);
230230
}
231231

232+
// Setup Windows compiler runtime calls.
233+
if (TT.isWindowsMSVCEnvironment() || TT.isWindowsItaniumEnvironment()) {
234+
static const struct {
235+
const RTLIB::Libcall Op;
236+
const char *const Name;
237+
const CallingConv::ID CC;
238+
} LibraryCalls[] = {
239+
{RTLIB::SDIV_I64, "_alldiv", CallingConv::X86_StdCall},
240+
{RTLIB::UDIV_I64, "_aulldiv", CallingConv::X86_StdCall},
241+
{RTLIB::SREM_I64, "_allrem", CallingConv::X86_StdCall},
242+
{RTLIB::UREM_I64, "_aullrem", CallingConv::X86_StdCall},
243+
{RTLIB::MUL_I64, "_allmul", CallingConv::X86_StdCall},
244+
};
245+
246+
for (const auto &LC : LibraryCalls) {
247+
setLibcallName(LC.Op, LC.Name);
248+
setLibcallCallingConv(LC.Op, LC.CC);
249+
}
250+
}
251+
232252
if (TT.getArch() == Triple::ArchType::avr) {
233253
// Division rtlib functions (not supported), use divmod functions instead
234254
setLibcallName(RTLIB::SDIV_I8, nullptr);

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -166,26 +166,6 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
166166
addBypassSlowDiv(64, 32);
167167
}
168168

169-
// Setup Windows compiler runtime calls.
170-
if (Subtarget.isTargetWindowsMSVC() || Subtarget.isTargetWindowsItanium()) {
171-
static const struct {
172-
const RTLIB::Libcall Op;
173-
const char * const Name;
174-
const CallingConv::ID CC;
175-
} LibraryCalls[] = {
176-
{ RTLIB::SDIV_I64, "_alldiv", CallingConv::X86_StdCall },
177-
{ RTLIB::UDIV_I64, "_aulldiv", CallingConv::X86_StdCall },
178-
{ RTLIB::SREM_I64, "_allrem", CallingConv::X86_StdCall },
179-
{ RTLIB::UREM_I64, "_aullrem", CallingConv::X86_StdCall },
180-
{ RTLIB::MUL_I64, "_allmul", CallingConv::X86_StdCall },
181-
};
182-
183-
for (const auto &LC : LibraryCalls) {
184-
setLibcallName(LC.Op, LC.Name);
185-
setLibcallCallingConv(LC.Op, LC.CC);
186-
}
187-
}
188-
189169
if (Subtarget.canUseCMPXCHG16B())
190170
setMaxAtomicSizeInBitsSupported(128);
191171
else if (Subtarget.canUseCMPXCHG8B())
@@ -532,6 +512,8 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
532512
setOperationAction(ISD::EH_SJLJ_SETJMP, MVT::i32, Custom);
533513
setOperationAction(ISD::EH_SJLJ_LONGJMP, MVT::Other, Custom);
534514
setOperationAction(ISD::EH_SJLJ_SETUP_DISPATCH, MVT::Other, Custom);
515+
516+
// FIXME: This should be set in RuntimeLibcallsInfo
535517
if (TM.Options.ExceptionModel == ExceptionHandling::SjLj)
536518
setLibcallName(RTLIB::UNWIND_RESUME, "_Unwind_SjLj_Resume");
537519

0 commit comments

Comments
 (0)