[PATCH], Enable IBM/IEEE long double format to overriden more easily
Segher Boessenkool
segher@kernel.crashing.org
Thu Oct 26 00:11:00 GMT 2017
Hi Mike,
On Sat, Oct 21, 2017 at 09:09:58AM -0400, Michael Meissner wrote:
> As Segher and I were discussing off-line, I have some problems with the current
> -mabi={ieee,ibm}longdouble switches as we start to planning to modify GCC 9 and
> GLIBC 2.27/2.28 to support __float128 as the default long double format for
> power server systems.
>
> My gripes are:
>
> 1) Using Warn() in rs6000.opt means that you get two warning messages when
> you use the switches (one from the driver, and one from cc1).
>
> 2) I feel you should not get a warning if you select the option that
> reflects the current default behavior (i.e. -mabi=ibmlongdouble
> currently for power server systems).
>
> 3) There is no way to silenece the warning (i.e. -w doesn't work on
> warnings in the .opt file). Both GLIBC and LIBGCC will need the
> ability to build support modules with an explicit long double format.
>
> 4) In the future we will need a little more flexibility in how the default
> is set.
>
> 5) There is a mis-match between the documentation and rs6000.opt, as these
> switches are documented, but use Undocumented in the rs6000.opt.
Agreed on all.
> These patches fix these issues. If you use -Wno-psabi, it will silence the
> warning. I have built these patches on a little endian power8 system, and
> there were no regressions. Can I check these patches into the trunk?
>
> 2017-10-21 Michael Meissner <meissner@linux.vnet.ibm.com>
>
> * config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double
> default to IBM.
> * config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise.
> * config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the
> warning to rs6000.c. Remove the Undocumented flag, since it has
> been documented.
> (-mabi=ibmlongdouble): Likewise.
And more importantly, we _want_ it to be documented (right)?
> --- gcc/config/rs6000/rs6000.opt (revision 253961)
> +++ gcc/config/rs6000/rs6000.opt (working copy)
> @@ -381,10 +381,10 @@ mabi=d32
> Target RejectNegative Undocumented Warn(using old darwin ABI) Var(rs6000_darwin64_abi, 0)
>
> mabi=ieeelongdouble
> -Target RejectNegative Undocumented Warn(using IEEE extended precision long double) Var(rs6000_ieeequad) Save
> +Target RejectNegative Var(rs6000_ieeequad) Save
>
> mabi=ibmlongdouble
> -Target RejectNegative Undocumented Warn(using IBM extended precision long double) Var(rs6000_ieeequad, 0)
> +Target RejectNegative Var(rs6000_ieeequad, 0)
Does this need "Save" as well?
> + if (!warned_change_long_double && warn_psabi)
> + {
> + warned_change_long_double = true;
> + if (TARGET_IEEEQUAD)
> + warning (0, "Using IEEE extended precision long double");
> + else
> + warning (0, "Using IBM extended precision long double");
> + }
You can put OPT_Wpsabi in place of that 0, it's what that arg is for :-)
Okay with that changed. Thanks!
Segher
More information about the Gcc-patches
mailing list