https://github.com/hvdijk updated https://github.com/llvm/llvm-project/pull/171734
>From 91a7a33e15d88fbe2c217cac7b5d1661578136dd Mon Sep 17 00:00:00 2001 From: Harald van Dijk <[email protected]> Date: Wed, 10 Dec 2025 23:10:51 +0000 Subject: [PATCH] [NFC] isOSGlibc: musl is not glibc. 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. --- clang/lib/Basic/Targets/PPC.h | 4 ++-- llvm/include/llvm/TargetParser/Triple.h | 2 +- llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp | 2 +- llvm/lib/Target/PowerPC/PPCInstrInfo.cpp | 3 ++- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp | 4 ++-- llvm/lib/Target/X86/X86ISelLoweringCall.cpp | 4 ++-- llvm/lib/Target/X86/X86Subtarget.h | 1 + 7 files changed, 11 insertions(+), 9 deletions(-) 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(); } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
