diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-12-21 21:09:17 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-12-21 21:09:17 +0000 |
commit | 8ab8b08a1384e727f1e0efead5f052dfda703f35 (patch) | |
tree | 8cdea604544a9c90796000edc51b2434e4cc0a77 /gcc | |
parent | 4cd3e7df0b7dc202d10ed7935918f1194adfc514 (diff) | |
download | gcc-8ab8b08a1384e727f1e0efead5f052dfda703f35.zip gcc-8ab8b08a1384e727f1e0efead5f052dfda703f35.tar.gz gcc-8ab8b08a1384e727f1e0efead5f052dfda703f35.tar.bz2 |
re PR fortran/69121 (IEEE_SCALB is not generic)
2018-12-21 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69121
* ieee/ieee_arithmetic.F90: Provide missing interfaces for IEEE_SCALB.
2018-12-21 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69121
* gfortran.dg/ieee/ieee_9.f90: New test.
From-SVN: r267343
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 | 70 |
2 files changed, 75 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index eaabddf..1dd460a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-12-21 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/69121 + * gfortran.dg/ieee/ieee_9.f90: New test. + 2018-12-21 Jakub Jelinek <jakub@redhat.com> PR c++/86524 diff --git a/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 b/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 new file mode 100644 index 0000000..e62503d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 @@ -0,0 +1,70 @@ +! { dg-do run } +program foo + use ieee_arithmetic + use iso_fortran_env + 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 + + 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 + + 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 + + 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 + +end program foo |