mirror of git://gcc.gnu.org/git/gcc.git
re PR libfortran/59227 (FAIL: gfortran.dg/erf_3.F90 -O0 execution test)
PR libfortran/59227 * gfortran.dg/erf_3.F90: XFAIL on spu-* and ia64-*-linux*. Make more generic for other platforms. From-SVN: r205210
This commit is contained in:
parent
8f45afb879
commit
427a12dafc
|
|
@ -1,3 +1,9 @@
|
||||||
|
2013-11-21 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR libfortran/59227
|
||||||
|
* gfortran.dg/erf_3.F90: XFAIL on spu-* and ia64-*-linux*.
|
||||||
|
Make more generic for other platforms.
|
||||||
|
|
||||||
2013-11-21 Oleg Endo <olegendo@gcc.gnu.org>
|
2013-11-21 Oleg Endo <olegendo@gcc.gnu.org>
|
||||||
|
|
||||||
PR target/53976
|
PR target/53976
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,29 @@
|
||||||
! { dg-do run }
|
! { dg-do run { xfail spu-*-* ia64-*-linux* } }
|
||||||
! { dg-options "-fno-range-check -ffree-line-length-none -O0" }
|
! { dg-options "-fno-range-check -ffree-line-length-none -O0" }
|
||||||
! { dg-add-options ieee }
|
! { dg-add-options ieee }
|
||||||
!
|
!
|
||||||
! Check that simplification functions and runtime library agree on ERF,
|
! Check that simplification functions and runtime library agree on ERF,
|
||||||
! ERFC and ERFC_SCALED, for quadruple-precision.
|
! ERFC and ERFC_SCALED, for quadruple-precision.
|
||||||
|
!
|
||||||
|
! XFAILed for SPU targets because our library implementation of
|
||||||
|
! the double-precision erf/erfc functions is not accurate enough.
|
||||||
|
!
|
||||||
|
! XFAILed for IA64 Linux because of a glibc bug:
|
||||||
|
! http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59227
|
||||||
|
|
||||||
program test
|
program test
|
||||||
|
use, intrinsic :: iso_fortran_env
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
real(kind=16) :: x16
|
! QP will be the largest supported real kind, possibly real(kind=16)
|
||||||
|
integer, parameter :: qp = real_kinds(ubound(real_kinds,dim=1))
|
||||||
|
real(kind=qp) :: x
|
||||||
|
|
||||||
#define CHECK(a) \
|
#define CHECK(a) \
|
||||||
x16 = a ; \
|
x = a ; \
|
||||||
call check(erf(real(a,kind=16)), erf(x16)) ; \
|
call check(erf(real(a,kind=qp)), erf(x)) ; \
|
||||||
call check(erfc(real(a,kind=16)), erfc(x16)) ; \
|
call check(erfc(real(a,kind=qp)), erfc(x)) ; \
|
||||||
call check(erfc_scaled(real(a,kind=16)), erfc_scaled(x16))
|
call check(erfc_scaled(real(a,kind=qp)), erfc_scaled(x))
|
||||||
|
|
||||||
CHECK(0.0)
|
CHECK(0.0)
|
||||||
CHECK(0.9)
|
CHECK(0.9)
|
||||||
|
|
@ -36,7 +45,7 @@ program test
|
||||||
contains
|
contains
|
||||||
|
|
||||||
subroutine check (a, b)
|
subroutine check (a, b)
|
||||||
real(kind=16), intent(in) :: a, b
|
real(kind=qp), intent(in) :: a, b
|
||||||
print *, abs(a-b) / spacing(a)
|
print *, abs(a-b) / spacing(a)
|
||||||
if (abs(a - b) > 10 * spacing(a)) call abort
|
if (abs(a - b) > 10 * spacing(a)) call abort
|
||||||
end subroutine
|
end subroutine
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue