We need this to ensure musl ppc targets use 64-bit long double, as our libgcc ships without the 128-bit long double runtime funcs enabled for musl and even if it did, the resulting binary would be incorrect. --- a/lib/Basic/Targets/PPC.h +++ b/lib/Basic/Targets/PPC.h @@ -342,6 +342,15 @@ public: break; } + switch (getTriple().getEnvironment()) { + case llvm::Triple::Musl: + LongDoubleWidth = LongDoubleAlign = 64; + LongDoubleFormat = &llvm::APFloat::IEEEdouble(); + break; + default: + break; + } + // PPC32 supports atomics up to 4 bytes. MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 32; } @@ -378,6 +387,15 @@ public: break; } + switch (getTriple().getEnvironment()) { + case llvm::Triple::Musl: + LongDoubleWidth = LongDoubleAlign = 64; + LongDoubleFormat = &llvm::APFloat::IEEEdouble(); + break; + default: + break; + } + // PPC64 supports atomics up to 8 bytes. MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; }