Skip to content

Commit 9e8152b

Browse files
authored
RuntimeLibcalls: Cleanup darwin exp10 case (#145638)
Add a predicate function following the example of __sincos_stret
1 parent b991b21 commit 9e8152b

File tree

2 files changed

+25
-25
lines changed

2 files changed

+25
-25
lines changed

llvm/include/llvm/IR/RuntimeLibcalls.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,8 @@ struct RuntimeLibcallsInfo {
149149
return true;
150150
}
151151

152+
static bool darwinHasExp10(const Triple &TT);
153+
152154
/// Return true if the target has sincosf/sincos/sincosl functions
153155
static bool hasSinCos(const Triple &TT) {
154156
return TT.isGNUEnvironment() || TT.isOSFuchsia() ||

llvm/lib/IR/RuntimeLibcalls.cpp

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -457,33 +457,12 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT,
457457
}
458458
}
459459

460-
switch (TT.getOS()) {
461-
case Triple::MacOSX:
462-
if (TT.isMacOSXVersionLT(10, 9)) {
463-
setLibcallName(RTLIB::EXP10_F32, nullptr);
464-
setLibcallName(RTLIB::EXP10_F64, nullptr);
465-
} else {
466-
setLibcallName(RTLIB::EXP10_F32, "__exp10f");
467-
setLibcallName(RTLIB::EXP10_F64, "__exp10");
468-
}
469-
break;
470-
case Triple::IOS:
471-
if (TT.isOSVersionLT(7, 0)) {
472-
setLibcallName(RTLIB::EXP10_F32, nullptr);
473-
setLibcallName(RTLIB::EXP10_F64, nullptr);
474-
break;
475-
}
476-
[[fallthrough]];
477-
case Triple::DriverKit:
478-
case Triple::TvOS:
479-
case Triple::WatchOS:
480-
case Triple::XROS:
481-
case Triple::BridgeOS:
460+
if (darwinHasExp10(TT)) {
482461
setLibcallName(RTLIB::EXP10_F32, "__exp10f");
483462
setLibcallName(RTLIB::EXP10_F64, "__exp10");
484-
break;
485-
default:
486-
break;
463+
} else {
464+
setLibcallName(RTLIB::EXP10_F32, nullptr);
465+
setLibcallName(RTLIB::EXP10_F64, nullptr);
487466
}
488467
}
489468

@@ -662,3 +641,22 @@ void RuntimeLibcallsInfo::initLibcalls(const Triple &TT,
662641
if (TT.getArch() == Triple::ArchType::msp430)
663642
setMSP430Libcalls(*this, TT);
664643
}
644+
645+
bool RuntimeLibcallsInfo::darwinHasExp10(const Triple &TT) {
646+
assert(TT.isOSDarwin() && "should be called with darwin triple");
647+
648+
switch (TT.getOS()) {
649+
case Triple::MacOSX:
650+
return !TT.isMacOSXVersionLT(10, 9);
651+
case Triple::IOS:
652+
return !TT.isOSVersionLT(7, 0);
653+
case Triple::DriverKit:
654+
case Triple::TvOS:
655+
case Triple::WatchOS:
656+
case Triple::XROS:
657+
case Triple::BridgeOS:
658+
return true;
659+
default:
660+
return false;
661+
}
662+
}

0 commit comments

Comments
 (0)