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?