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(); } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
