Skip to content

Commit 18b6137

Browse files
authored
[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.
1 parent fa92475 commit 18b6137

File tree

7 files changed

+11
-9
lines changed

7 files changed

+11
-9
lines changed

clang/lib/Basic/Targets/PPC.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,15 +368,15 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetInfo : public TargetInfo {
368368
bool supportsCpuSupports() const override {
369369
llvm::Triple Triple = getTriple();
370370
// AIX 7.2 is the minimum requirement to support __builtin_cpu_supports().
371-
return Triple.isOSGlibc() ||
371+
return Triple.isOSGlibc() || Triple.isMusl() ||
372372
(Triple.isOSAIX() &&
373373
!Triple.isOSVersionLT(MINIMUM_AIX_OS_MAJOR, MINIMUM_AIX_OS_MINOR));
374374
}
375375

376376
bool supportsCpuIs() const override {
377377
llvm::Triple Triple = getTriple();
378378
// AIX 7.2 is the minimum requirement to support __builtin_cpu_is().
379-
return Triple.isOSGlibc() ||
379+
return Triple.isOSGlibc() || Triple.isMusl() ||
380380
(Triple.isOSAIX() &&
381381
!Triple.isOSVersionLT(MINIMUM_AIX_OS_MAJOR, MINIMUM_AIX_OS_MINOR));
382382
}

llvm/include/llvm/TargetParser/Triple.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,7 @@ class Triple {
769769
bool isOSGlibc() const {
770770
return (getOS() == Triple::Linux || getOS() == Triple::KFreeBSD ||
771771
getOS() == Triple::Hurd) &&
772-
!isAndroid();
772+
!isAndroid() && !isMusl();
773773
}
774774

775775
/// Tests whether the OS is AIX.

llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2423,7 +2423,7 @@ static bool targetSupportsPAuthRelocation(const Triple &TT,
24232423
const MCExpr *Target,
24242424
const MCExpr *DSExpr) {
24252425
// No released version of glibc supports PAuth relocations.
2426-
if (TT.isOSGlibc())
2426+
if (TT.isOSGlibc() || TT.isMusl())
24272427
return false;
24282428

24292429
// We emit PAuth constants as IRELATIVE relocations in cases where the

llvm/lib/Target/PowerPC/PPCInstrInfo.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3180,7 +3180,8 @@ bool PPCInstrInfo::expandPostRAPseudo(MachineInstr &MI) const {
31803180
return true;
31813181
}
31823182
case PPC::PPCLdFixedAddr: {
3183-
assert(Subtarget.getTargetTriple().isOSGlibc() &&
3183+
assert((Subtarget.getTargetTriple().isOSGlibc() ||
3184+
Subtarget.getTargetTriple().isMusl()) &&
31843185
"Only targets with Glibc expected to contain PPCLdFixedAddr");
31853186
int64_t Offset = 0;
31863187
const unsigned Reg = Subtarget.isPPC64() ? PPC::X13 : PPC::R2;

llvm/lib/Target/X86/X86ISelDAGToDAG.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1875,8 +1875,8 @@ bool X86DAGToDAGISel::matchLoadInAddress(LoadSDNode *N, X86ISelAddressMode &AM,
18751875
// For more information see http://people.redhat.com/drepper/tls.pdf
18761876
if (isNullConstant(Address) && AM.Segment.getNode() == nullptr &&
18771877
!IndirectTlsSegRefs &&
1878-
(Subtarget->isTargetGlibc() || Subtarget->isTargetAndroid() ||
1879-
Subtarget->isTargetFuchsia())) {
1878+
(Subtarget->isTargetGlibc() || Subtarget->isTargetMusl() ||
1879+
Subtarget->isTargetAndroid() || Subtarget->isTargetFuchsia())) {
18801880
if (Subtarget->isTarget64BitILP32() && !AllowSegmentRegForX32)
18811881
return true;
18821882
switch (N->getPointerInfo().getAddrSpace()) {

llvm/lib/Target/X86/X86ISelLoweringCall.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -546,8 +546,8 @@ unsigned X86TargetLowering::getAddressSpace() const {
546546
}
547547

548548
static bool hasStackGuardSlotTLS(const Triple &TargetTriple) {
549-
return TargetTriple.isOSGlibc() || TargetTriple.isOSFuchsia() ||
550-
TargetTriple.isAndroid();
549+
return TargetTriple.isOSGlibc() || TargetTriple.isMusl() ||
550+
TargetTriple.isOSFuchsia() || TargetTriple.isAndroid();
551551
}
552552

553553
static Constant* SegmentOffset(IRBuilderBase &IRB,

llvm/lib/Target/X86/X86Subtarget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,7 @@ class X86Subtarget final : public X86GenSubtargetInfo {
293293
bool isTargetKFreeBSD() const { return TargetTriple.isOSKFreeBSD(); }
294294
bool isTargetHurd() const { return TargetTriple.isOSHurd(); }
295295
bool isTargetGlibc() const { return TargetTriple.isOSGlibc(); }
296+
bool isTargetMusl() const { return TargetTriple.isMusl(); }
296297
bool isTargetAndroid() const { return TargetTriple.isAndroid(); }
297298
bool isTargetMCU() const { return TargetTriple.isOSIAMCU(); }
298299
bool isTargetFuchsia() const { return TargetTriple.isOSFuchsia(); }

0 commit comments

Comments
 (0)