On Thu, 2020-10-22 at 18:15 -0400, Michael Meissner via Gcc-patches wrote:
> PowerPC: Allow C/C++ to change long double type on GLIBC 2.32.
>
> This is a new patch. It turns off the warning about switching the long double
> type via compile line if the GLIBC is 2.32 or newer. It only does this if the
> languages are C or C++, since those language libraries support switching the
> long double type. Other languages like Fortran don't have any current support
> to provide both sets of interfaces to the library.
>
> 2020-10-21 Michael Meissner <[email protected]>
>
> * config/rs6000/rs6000.c (rs6000_option_override_internal): Allow
> long double type to be changed for C/C++ if glibc 2.32 or newer.
> ---
> gcc/config/rs6000/rs6000.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
> index 50039c0a53d..940c15f3265 100644
> --- a/gcc/config/rs6000/rs6000.c
> +++ b/gcc/config/rs6000/rs6000.c
> @@ -4158,10 +4158,16 @@ rs6000_option_override_internal (bool global_init_p)
>
> if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT &&
> TARGET_LONG_DOUBLE_128)
> {
> + /* Determine if the user can change the default long double type at
> + compilation time. Only C and C++ support this, and you need GLIBC
> + 2.32 or newer. Only issue one warning. */
> static bool warned_change_long_double;
> - if (!warned_change_long_double)
> +
> + if (!warned_change_long_double
> + && (!OPTION_GLIBC
> + || (!lang_GNU_C () && !lang_GNU_CXX ())
> + || ((TARGET_GLIBC_MAJOR * 1000) + TARGET_GLIBC_MINOR) < 2032))
> {
> - warned_change_long_double = true;
Does this need to be added back elsewhere?
> if (TARGET_IEEEQUAD)
> warning (OPT_Wpsabi, "Using IEEE extended precision "
> "%<long double%>");
> --
> 2.22.0
>
>