66 lines
3 KiB
Diff
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
|
|
|