aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2018-12-21 21:09:17 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-12-21 21:09:17 +0000
commit8ab8b08a1384e727f1e0efead5f052dfda703f35 (patch)
tree8cdea604544a9c90796000edc51b2434e4cc0a77 /gcc
parent4cd3e7df0b7dc202d10ed7935918f1194adfc514 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/ieee/ieee_9.f9070
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