float128 is these days needed in Clang/LLVM and it is enabled in virtually every relevant target (even e.g. Cygwin). The change to enable it in Clang is tiny: --- lib/Basic/Targets/OSTargets.h.orig 2019-08-01 08:49:35.000000000 +0000 +++ lib/Basic/Targets/OSTargets.h @@ -436,12 +436,22 @@ protected: Builder.defineMacro("__ELF__"); if (Opts.POSIXThreads) Builder.defineMacro("_REENTRANT"); + if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); } public: NetBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : OSTargetInfo<Target>(Triple, Opts) { this->MCountName = "__mcount"; + switch (Triple.getArch()) { + default: + break; + case llvm::Triple::x86: + case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; + } } }; We enabled the float128 option in Clang from pkgsrc back 2018: clang: enable __float128 on netbsd/x86 While it is debatable whether we want to have this definition upstream, this is very necessary in the package for the purpose of building www/firefox once it is updated to 63.0. This is because netbsd's base libstdc++ has some __float128 in headers and otherwise we get fatal errors in clang builds, or in firefox's case, when generating bindings for Rust via clang. PR toolchain/53679 Bump PKGREVISION. https://github.com/NetBSD/pkgsrc/commit/5bfbee5346da09b291d292cd2f1ca2bb41193e7b#diff-6a5b71da17fbcf0f2f7467e814e16c18 There were claims from Joerg that __float128 is unsupported in compiler-rt. I don't understand what is exactly problematic here. Insisting on lack of float128 causes mismatch in features between LLVM platforms for unknown to me reasons. If there is need to pick __float128 functions, why not to pick float128 support just as-is from Berkeley SoftFLoat 3 ( https://github.com/ucb-bar/berkeley-softfloat-3 )? We already import softfloat code in our distribution. What is the proper procedure to enable float128 by default in Clang and finally sort out this shortage? Personally, I want to enable float128 for x86 in Clang-10.x that will be branched in ~10 days.
Attachment:
signature.asc
Description: OpenPGP digital signature