From llvm: Fwd: [Bug 26519] Clang 3.8.0's "Target: powerpc-unknown-freebsd11.0" code generation is violating the SVR4 ABI (SEGV can result) [fixed in llvm -r280705]
Krzysztof Parzyszek
kristof at swissmail.org
Fri Sep 9 18:46:05 UTC 2016
On 9/8/2016 8:02 PM, Mark Millard wrote:
>
> Interestingly http://compiler-rt.llvm.org says (mentioning powerpc64 explicitly):
>
> [Quoting the web site this time.]
>
>> Platform Support
>>
>> builtins is known to work on the following platforms:
>>
>> • Machine Architectures: i386, X86-64, SPARC64, ARM, PowerPC, PowerPC 64.
>> • OS: AuroraUX, DragonFlyBSD, FreeBSD, NetBSD, Linux, Darwin.
>
> If true for all builtins (libgcc like) for powerpc64 then I'm not sure why there is the code:
>
> [Quoting from https://reviews.llvm.org/D13351 and its cfe/trunk/lib/Driver/Tools.cpp material this time.]
>
>> ppc::FloatABI FloatABI = ppc::getPPCFloatABI(D, Args);
>> if (FloatABI == ppc::FloatABI::Soft &&
>> !(Triple.getArch() == llvm::Triple::ppc64 ||
>> Triple.getArch() == llvm::Triple::ppc64le))
>> Features.push_back("+soft-float");
>> else if (FloatABI == ppc::FloatABI::Soft &&
>> (Triple.getArch() == llvm::Triple::ppc64 ||
>> Triple.getArch() == llvm::Triple::ppc64le))
>> D.Diag(diag::err_drv_invalid_mfloat_abi)
>> << "soft float is not supported for ppc64";
>
> The above reports that "soft float is not supported for ppc64". This notice seems to be global for clang powerpc64: in no way FreeBSD specific.
>
> May be the view is that no floating point builtins ever apply to powerpc64 (but they do for powerpc (32))?
I think the reasoning was that all powerpc64 cores do contain
floating-point units (and that the 64-bit part wasn't tried/tested/etc).
I have looked at compiler-rt and it does have support for all
floating-point operations (although it seems to only do
rounding-to-nearest).
On a somewhat related note---the kernel does have some sort of an FPU
emulation---do you know what it's for and how it's used? It does make
more sense to use compiler-supported library though, after all it's the
compiler generating calls to it.
-Krzysztof
More information about the freebsd-ppc
mailing list