http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51057

--- Comment #9 from Steve Kargl <sgk at troutmask dot apl.washington.edu> 
2011-12-03 23:36:01 UTC ---
On Sat, Dec 03, 2011 at 11:15:32PM +0000, dominiq at lps dot ens.fr wrote:
> (In reply to comment #5)
> > It's not a long list if you XFAIL this for all ppc systems.
> >You need something along the lines
> >
> > ! { dg-do run { target { ! { ppc*-*-* } } } }
> 
> (In reply to comment #7)
> > Did you read the thread?  I specifically recommended that
> > the testcase should be XFAILed for the missing sqrtl, too;
> > because no one is going to implement a suitable sqrtl in
> > c99_functions.c.
> 
> So the list will be longer than ppc*-*-*.
> 

As others report failures, then I suppose the answer is yes.
If you don't like this option, implement a suitable sqrtl().
Go re-read my responses in the other and then read

http://svnweb.freebsd.org/base/head/lib/msun/src/e_sqrtl.c?revision=176720&view=markup

It's only 159 lines of code. 

> > Lowering the accuracy of the test to allow ppc to pass opens up the
> > possibility of missing a bug in libquadmath when someone makes a
> > change to the library.
> 
> I am impressed by the coverage! what about
> 
> --- /opt/gcc/_gcc_clean/gcc/testsuite/gfortran.dg/quad_2.f90    2011-11-06
> 20:24:56.000000000 +0100
> +++ /opt/gcc/work/gcc/testsuite/gfortran.dg/quad_2.f90    2011-12-04
> 00:08:16.000000000 +0100
> @@ -48,8 +48,13 @@ program test_qp
>       case (16)
>         if (str1 /= "   1.00000000000000000000000000000000000") call abort()
>         if (str2 /= "1.00000000000000000000000000000000000") call abort()
> -       if (str3 /= "   1.41421356237309504880168872420969798") call abort()
> -       if (str4 /= "1.41421356237309504880168872420969798") call abort()
> +       if (size (real_kinds) >= 4) then
> +         if (str3 /= "   1.41421356237309504880168872420969798") call abort()
> +         if (str4 /= "1.41421356237309504880168872420969798") call abort()
> +       else
> +         if (str3(1:37) /= "   1.41421356237309504880168872420969") call
> abort()
> +         if (str4(1:34) /= "1.41421356237309504880168872420969") call abort()
> +       end if
>         block
>           real(qp), volatile :: fp2a
>           fp2a = 2.0_qp
> 

Why is it so difficult to accept that the test can be XFAILed.
The above is an ugly hack.  Are you going to fix all other
REAL(16) examples with a similar approach?

Reply via email to