diff options
author | Francois-Xavier Coudert <fxcoudert@gmail.com> | 2021-12-31 23:19:03 +0100 |
---|---|---|
committer | Francois-Xavier Coudert <fxcoudert@gmail.com> | 2021-12-31 23:19:34 +0100 |
commit | cb48166e52c0f159eb80a0666c4847825e294ec0 (patch) | |
tree | 0443023707054b6f710a2e819dac6db46b89e5d9 /gcc | |
parent | e3cbb8c66c930ba738674b0fcf29848dc3ecfef2 (diff) | |
download | gcc-cb48166e52c0f159eb80a0666c4847825e294ec0.zip gcc-cb48166e52c0f159eb80a0666c4847825e294ec0.tar.gz gcc-cb48166e52c0f159eb80a0666c4847825e294ec0.tar.bz2 |
Fortran: Fix test on targets without REAL128
REAL128 is a named constant, so we cannot simply use
(REAL128 > 0) to conditionally compile for targets with
REAL128.
gcc/testsuite/ChangeLog:
PR fortran/89639
* gfortran.dg/ieee/ieee_9.f90: Adjust test for targets without
REAL128.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 | 90 |
1 files changed, 32 insertions, 58 deletions
diff --git a/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 b/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 index 5e0ac36..e5935ec 100644 --- a/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 +++ b/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 @@ -1,71 +1,45 @@ -! { dg-do run { xfail arm*-*-gnueabi arm*-*-gnueabihf } } -! { dg-skip-if "PR89639" { hppa*-*-linux* } } +! { dg-do run } program foo use ieee_arithmetic use iso_fortran_env + implicit none + + ! This allows us to test REAL128 if it exists, and still compile + ! on platforms were it is not present + ! https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89639 + integer, parameter :: large = merge(real128, real64, real128 > 0) + integer i, p real x x = 4 i = 4 - if (int8 > 0) then - if (real32 > 0) then - p = int(ieee_scalb(real(x, real32), int(i, int8))) - if (p /= 64) stop 1 - endif - if (real64 > 0) then - p = int(ieee_scalb(real(x, real64), int(i, int8))) - if (p /= 64) stop 2 - endif - if (real128 > 0) then - p = int(ieee_scalb(real(x, real128), int(i, int8))) - if (p /= 64) stop 3 - end if - end if + p = int(ieee_scalb(real(x, real32), int(i, int8))) + if (p /= 64) stop 1 + p = int(ieee_scalb(real(x, real64), int(i, int8))) + if (p /= 64) stop 2 + p = int(ieee_scalb(real(x, large), int(i, int8))) + if (p /= 64) stop 3 - if (int16 > 0) then - if (real32 > 0) then - p = int(ieee_scalb(real(x, real32), int(i, int16))) - if (p /= 64) stop 4 - endif - if (real64 > 0) then - p = int(ieee_scalb(real(x, real64), int(i, int16))) - if (p /= 64) stop 5 - endif - if (real128 > 0) then - p = int(ieee_scalb(real(x, real128), int(i, int16))) - if (p /= 64) stop 6 - end if - end if + p = int(ieee_scalb(real(x, real32), int(i, int16))) + if (p /= 64) stop 4 + p = int(ieee_scalb(real(x, real64), int(i, int16))) + if (p /= 64) stop 5 + p = int(ieee_scalb(real(x, large), int(i, int16))) + if (p /= 64) stop 6 - if (int32 > 0) then - if (real32 > 0) then - p = int(ieee_scalb(real(x, real32), int(i, int32))) - if (p /= 64) stop 7 - endif - if (real64 > 0) then - p = int(ieee_scalb(real(x, real64), int(i, int32))) - if (p /= 64) stop 8 - endif - if (real128 > 0) then - p = int(ieee_scalb(real(x, real128), int(i, int32))) - if (p /= 64) stop 9 - end if - end if + p = int(ieee_scalb(real(x, real32), int(i, int32))) + if (p /= 64) stop 7 + p = int(ieee_scalb(real(x, real64), int(i, int32))) + if (p /= 64) stop 8 + p = int(ieee_scalb(real(x, large), int(i, int32))) + if (p /= 64) stop 9 - if (int64 > 0) then - if (real32 > 0) then - p = int(ieee_scalb(real(x, real32), int(i, int64))) - if (p /= 64) stop 10 - endif - if (real64 > 0) then - p = int(ieee_scalb(real(x, real64), int(i, int64))) - if (p /= 64) stop 11 - endif - if (real128 > 0) then - p = int(ieee_scalb(real(x, real128), int(i, int64))) - if (p /= 64) stop 12 - end if - end if + p = int(ieee_scalb(real(x, real32), int(i, int64))) + if (p /= 64) stop 10 + p = int(ieee_scalb(real(x, real64), int(i, int64))) + if (p /= 64) stop 11 + p = int(ieee_scalb(real(x, large), int(i, int64))) + if (p /= 64) stop 12 end program foo |