aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <fxcoudert@gmail.com>2021-12-31 23:19:03 +0100
committerFrancois-Xavier Coudert <fxcoudert@gmail.com>2021-12-31 23:19:34 +0100
commitcb48166e52c0f159eb80a0666c4847825e294ec0 (patch)
tree0443023707054b6f710a2e819dac6db46b89e5d9 /gcc
parente3cbb8c66c930ba738674b0fcf29848dc3ecfef2 (diff)
downloadgcc-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.f9090
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