Hi!

On Thu, Nov 19, 2020 at 06:54:29PM -0500, Michael Meissner wrote:
> 1) Only set gnu attribute #4 if long double was passed.  Passing __float128
> when long double is IBM or __ibm128 when long double is IEEE no longer sets 
> the
> attribute.  This resulted in a lot of false positives, such as using 
> __float128
> and no long double support.

Sure, makes sense (and is a bug fix actually).

> 2) Do not set the gnu attribute if a mode used by long double (TF or DF) is
> used in a move.  The moves do not differentiate between the long double type
> and similar types.  Delete the three tests that tested this.

This, too.

> diff --git a/gcc/testsuite/gcc.target/powerpc/gnuattr1.c 
> b/gcc/testsuite/gcc.target/powerpc/gnuattr1.c
> deleted file mode 100644
> index cf46777849a..00000000000
> --- a/gcc/testsuite/gcc.target/powerpc/gnuattr1.c
> +++ /dev/null
> @@ -1,15 +0,0 @@
> -/* { dg-do compile { target { powerpc*-linux-* } } } */
> -/* { dg-require-effective-target powerpc_vsx_ok } */
> -/* { dg-options "-O2 -mvsx -mlong-double-64" } */
> -/* { dg-final { scan-assembler "gnu_attribute 4, 9" } } */
> -
> -/* Check that if we can do the long double operation without doing an 
> emulator
> -   call, such as with 64-bit long double support, that we still set the
> -   appropriate .gnu_attribute.  */
> -
> -long double a;
> -
> -void add1 (void)
> -{
> -  a++;
> -}

But this *does* use long double.  So this testcase is valid, and you
should not delete it.

Instead, it points out you have a deficiency in the code, one that used
to be hidden by how you used moves to set the attribute.

Same for the other testcases you delete.


Segher

Reply via email to