musllvm/patches/llvm/0013-llvm-fix-isOSGlibc-thinking-musl-is-glibc.patch
cowmonk 6110995cfb Initial stub of a Makefile and patches for LLVM
Nothing much, but getting some patches from chimera linux that should
work.
2025-10-25 16:23:17 -07:00

66 lines
3 KiB
Diff

From 194f8e7519bec165fefcaf2a4be82cfd4c271a7d Mon Sep 17 00:00:00 2001
From: q66 <q66@chimera-linux.org>
Date: Wed, 16 Apr 2025 00:30:51 +0200
Subject: [PATCH 13/29] llvm: fix isOSGlibc thinking musl is glibc
---
llvm/include/llvm/TargetParser/Triple.h | 2 +-
llvm/lib/Target/X86/X86ISelDAGToDAG.cpp | 2 +-
llvm/lib/Target/X86/X86ISelLoweringCall.cpp | 2 +-
llvm/lib/Target/X86/X86Subtarget.h | 1 +
4 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/llvm/include/llvm/TargetParser/Triple.h b/llvm/include/llvm/TargetParser/Triple.h
index 7d67966d1..721a7a3e1 100644
--- a/llvm/include/llvm/TargetParser/Triple.h
+++ b/llvm/include/llvm/TargetParser/Triple.h
@@ -737,7 +737,7 @@ public:
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/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
index 84bcdae52..b6a8ce0ee 100644
--- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -1876,7 +1876,7 @@ 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->isTargetGlibc() || Subtarget->isTargetMusl() || Subtarget->isTargetAndroid() ||
Subtarget->isTargetFuchsia())) {
if (Subtarget->isTarget64BitILP32() && !AllowSegmentRegForX32)
return true;
diff --git a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp
index 6835c7e33..50eb2384b 100644
--- a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp
+++ b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp
@@ -536,7 +536,7 @@ unsigned X86TargetLowering::getAddressSpace() const {
}
static bool hasStackGuardSlotTLS(const Triple &TargetTriple) {
- return TargetTriple.isOSGlibc() || TargetTriple.isOSFuchsia() ||
+ return TargetTriple.isOSGlibc() || TargetTriple.isOSFuchsia() || TargetTriple.isMusl() ||
(TargetTriple.isAndroid() && !TargetTriple.isAndroidVersionLT(17));
}
diff --git a/llvm/lib/Target/X86/X86Subtarget.h b/llvm/lib/Target/X86/X86Subtarget.h
index 722076ca8..c2fc60eff 100644
--- a/llvm/lib/Target/X86/X86Subtarget.h
+++ b/llvm/lib/Target/X86/X86Subtarget.h
@@ -295,6 +295,7 @@ public:
bool isTargetLinux() const { return TargetTriple.isOSLinux(); }
bool isTargetKFreeBSD() const { return TargetTriple.isOSKFreeBSD(); }
bool isTargetGlibc() const { return TargetTriple.isOSGlibc(); }
+ bool isTargetMusl() const { return TargetTriple.isMusl(); }
bool isTargetAndroid() const { return TargetTriple.isAndroid(); }
bool isTargetNaCl() const { return TargetTriple.isOSNaCl(); }
bool isTargetNaCl32() const { return isTargetNaCl() && !is64Bit(); }
--
2.49.0