[llvm] 18b6137 - [NFC] isOSGlibc: musl is not glibc. (#171734)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 10 19:50:09 PST 2025
Author: Harald van Dijk
Date: 2025-12-11T03:50:04Z
New Revision: 18b61373d85a279ac08c8b77fedfc1cf991b3e4c
URL: https://github.com/llvm/llvm-project/commit/18b61373d85a279ac08c8b77fedfc1cf991b3e4c
DIFF: https://github.com/llvm/llvm-project/commit/18b61373d85a279ac08c8b77fedfc1cf991b3e4c.diff
LOG: [NFC] isOSGlibc: musl is not glibc. (#171734)
Previously, `isOSGlibc()` was returning true for musl triples as well.
This commit changes `isOSGlibc()` to return false for musl triples, and
updates all existing `isOSGlibc()` checks to call `isOSGlibc() ||
isMusl()`, in order to preserve existing behaviour.
Added:
Modified:
clang/lib/Basic/Targets/PPC.h
llvm/include/llvm/TargetParser/Triple.h
llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
llvm/lib/Target/X86/X86ISelLoweringCall.cpp
llvm/lib/Target/X86/X86Subtarget.h
Removed:
################################################################################
diff --git a/clang/lib/Basic/Targets/PPC.h b/clang/lib/Basic/Targets/PPC.h
index 8313826d88500..664c9e15d8d18 100644
--- a/clang/lib/Basic/Targets/PPC.h
+++ b/clang/lib/Basic/Targets/PPC.h
@@ -368,7 +368,7 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetInfo : public TargetInfo {
bool supportsCpuSupports() const override {
llvm::Triple Triple = getTriple();
// AIX 7.2 is the minimum requirement to support __builtin_cpu_supports().
- return Triple.isOSGlibc() ||
+ return Triple.isOSGlibc() || Triple.isMusl() ||
(Triple.isOSAIX() &&
!Triple.isOSVersionLT(MINIMUM_AIX_OS_MAJOR, MINIMUM_AIX_OS_MINOR));
}
@@ -376,7 +376,7 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetInfo : public TargetInfo {
bool supportsCpuIs() const override {
llvm::Triple Triple = getTriple();
// AIX 7.2 is the minimum requirement to support __builtin_cpu_is().
- return Triple.isOSGlibc() ||
+ return Triple.isOSGlibc() || Triple.isMusl() ||
(Triple.isOSAIX() &&
!Triple.isOSVersionLT(MINIMUM_AIX_OS_MAJOR, MINIMUM_AIX_OS_MINOR));
}
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index 11b76cd183108..9480e7b36dc2c 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -769,7 +769,7 @@ class Triple {
bool isOSGlibc() const {
return (getOS() == Triple::Linux || getOS() == Triple::KFreeBSD ||
getOS() == Triple::Hurd) &&
- !isAndroid();
+ !isAndroid() && !isMusl();
}
/// Tests whether the OS is AIX.
diff --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
index 28a52ab8b1ae6..87256352faccd 100644
--- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
+++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
@@ -2423,7 +2423,7 @@ static bool targetSupportsPAuthRelocation(const Triple &TT,
const MCExpr *Target,
const MCExpr *DSExpr) {
// No released version of glibc supports PAuth relocations.
- if (TT.isOSGlibc())
+ if (TT.isOSGlibc() || TT.isMusl())
return false;
// We emit PAuth constants as IRELATIVE relocations in cases where the
diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
index 366a7b6d0135a..99bef417eaa89 100644
--- a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
+++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
@@ -3180,7 +3180,8 @@ bool PPCInstrInfo::expandPostRAPseudo(MachineInstr &MI) const {
return true;
}
case PPC::PPCLdFixedAddr: {
- assert(Subtarget.getTargetTriple().isOSGlibc() &&
+ assert((Subtarget.getTargetTriple().isOSGlibc() ||
+ Subtarget.getTargetTriple().isMusl()) &&
"Only targets with Glibc expected to contain PPCLdFixedAddr");
int64_t Offset = 0;
const unsigned Reg = Subtarget.isPPC64() ? PPC::X13 : PPC::R2;
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
index e7903a72d85bb..9791c1999086b 100644
--- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -1875,8 +1875,8 @@ bool X86DAGToDAGISel::matchLoadInAddress(LoadSDNode *N, X86ISelAddressMode &AM,
// For more information see http://people.redhat.com/drepper/tls.pdf
if (isNullConstant(Address) && AM.Segment.getNode() == nullptr &&
!IndirectTlsSegRefs &&
- (Subtarget->isTargetGlibc() || Subtarget->isTargetAndroid() ||
- Subtarget->isTargetFuchsia())) {
+ (Subtarget->isTargetGlibc() || Subtarget->isTargetMusl() ||
+ Subtarget->isTargetAndroid() || Subtarget->isTargetFuchsia())) {
if (Subtarget->isTarget64BitILP32() && !AllowSegmentRegForX32)
return true;
switch (N->getPointerInfo().getAddrSpace()) {
diff --git a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp
index 8db3e501f9b7e..ae9d0a162011f 100644
--- a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp
+++ b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp
@@ -546,8 +546,8 @@ unsigned X86TargetLowering::getAddressSpace() const {
}
static bool hasStackGuardSlotTLS(const Triple &TargetTriple) {
- return TargetTriple.isOSGlibc() || TargetTriple.isOSFuchsia() ||
- TargetTriple.isAndroid();
+ return TargetTriple.isOSGlibc() || TargetTriple.isMusl() ||
+ TargetTriple.isOSFuchsia() || TargetTriple.isAndroid();
}
static Constant* SegmentOffset(IRBuilderBase &IRB,
diff --git a/llvm/lib/Target/X86/X86Subtarget.h b/llvm/lib/Target/X86/X86Subtarget.h
index 868f41375b96b..3b920bc4ef7c1 100644
--- a/llvm/lib/Target/X86/X86Subtarget.h
+++ b/llvm/lib/Target/X86/X86Subtarget.h
@@ -293,6 +293,7 @@ class X86Subtarget final : public X86GenSubtargetInfo {
bool isTargetKFreeBSD() const { return TargetTriple.isOSKFreeBSD(); }
bool isTargetHurd() const { return TargetTriple.isOSHurd(); }
bool isTargetGlibc() const { return TargetTriple.isOSGlibc(); }
+ bool isTargetMusl() const { return TargetTriple.isMusl(); }
bool isTargetAndroid() const { return TargetTriple.isAndroid(); }
bool isTargetMCU() const { return TargetTriple.isOSIAMCU(); }
bool isTargetFuchsia() const { return TargetTriple.isOSFuchsia(); }
More information about the llvm-commits
mailing list