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  <meiss...@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

Reply via email to