Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 Oct 2022 13:36:55 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        Brooks Davis <brooks@FreeBSD.org>, freebsd-arch <freebsd-arch@freebsd.org>
Subject:   RE: enabling float128 support in clang?
Message-ID:  <2705ED56-AD0E-4FC4-AB32-E96D297BEDDB@yahoo.com>
References:  <2705ED56-AD0E-4FC4-AB32-E96D297BEDDB.ref@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Brooks Davis <brooks_at_freebsd.org> wrote on
Date: Mon, 03 Oct 2022 18:43:10 UTC :

> TL;DR: Is there a reason not to enable float128 support in clang for
> x86?
>=20
> Due to a build breakage with the flang runtime, I recently noticed =
that=20
> unlike most other OSes we don't support float128 in clang.  It's =
enable
> in modern GCC and other OSes have it enable in clang:
>  - Hakiu 2018: https://reviews.llvm.org/D54901
>  - Solaris 2018: https://reviews.llvm.org/D41240
>  - WASM 2019: https://reviews.llvm.org/D57154
>  - Dragonfly 2021: https://reviews.llvm.org/D111760
>  - OpenBSD (history hard to find...)
>=20
> Is there a known reason not to enable this?
>=20
> Patch to enable below (I'm a bit skeptical of the __FLOAT128__ part as
> GCC doesn't define it...)
>=20
> -- Brooks
>=20
> diff --git a/clang/lib/Basic/Targets/OSTargets.h =
b/clang/lib/Basic/Targets/OSTargets.h
> index c75f7d9fbafe..ea95f40e81a0 100644
> --- a/clang/lib/Basic/Targets/OSTargets.h
> +++ b/clang/lib/Basic/Targets/OSTargets.h
> @@ -232,6 +232,9 @@ protected:
>      // setting this to 1 is conforming even if all the basic source
>      // character literals have the same encoding as char and wchar_t.
>      Builder.defineMacro("__STDC_MB_MIGHT_NEQ_WC__", "1");
> +
> +    if (this->HasFloat128)
> +      Builder.defineMacro("__FLOAT128__");
>    }
> =20
>  public:
> @@ -241,6 +244,7 @@ public:
>      default:
>      case llvm::Triple::x86:
>      case llvm::Triple::x86_64:
> +      this->HasFloat128 =3D true;
>        this->MCountName =3D ".mcount";
>        break;
>      case llvm::Triple::mips:
>=20
>=20


See:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D238129

for some past exchanges on this. =46rom comment #3:

QUOTE of Dimitry Andric:
As mentioned on the mailing list, it is not a matter of just "enabling" =
float128. Somebody has to step up and write a BSD licensed quadmath.h, =
to start with.
END QUOTE

=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2705ED56-AD0E-4FC4-AB32-E96D297BEDDB>