aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2009-12-08 15:12:06 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2009-12-08 15:12:06 +0100
commit17314cd9eb95fd1d2390cf6bceed6c329194ddf8 (patch)
tree25bdf186073490c914c868c8a4437898f364e054 /gcc
parent5d7cefe516e70313d60ce9f620eb4eb3f5bfc6f9 (diff)
downloadgcc-17314cd9eb95fd1d2390cf6bceed6c329194ddf8.zip
gcc-17314cd9eb95fd1d2390cf6bceed6c329194ddf8.tar.gz
gcc-17314cd9eb95fd1d2390cf6bceed6c329194ddf8.tar.bz2
re PR libfortran/41711 ([F08] BOZ edit-descr does not support reading large kind reals)
2009-12-08 Tobias Burnus <burnus@net-b.de> PR fortran/41711 * io/read.c (set_integer): Support kind=10 for reading real/complex BOZ. 2009-12-08 Tobias Burnus <burnus@net-b.de> PR fortran/41711 * gfortran.dg/boz_15.f90: New test. From-SVN: r155088
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/boz_15.f9049
2 files changed, 54 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cafd467..c054565 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-08 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/41711
+ * gfortran.dg/boz_15.f90: New test.
+
2008-12-08 Daniel Kraft <d@domob.eu>
PR fortran/41177
diff --git a/gcc/testsuite/gfortran.dg/boz_15.f90 b/gcc/testsuite/gfortran.dg/boz_15.f90
new file mode 100644
index 0000000..40ad514
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/boz_15.f90
@@ -0,0 +1,49 @@
+! { dg-do run }
+! { dg-require-effective-target fortran_large_real }
+! { dg-require-effective-target fortran_large_int }
+!
+! PR fortran/41711
+!
+! Check reading and writing of real(10/16) BOZ,
+! which needs integer(16) support.
+!
+implicit none
+character(len=255) :: str
+integer,parameter :: xp = selected_real_kind (precision (0.0d0)+1)
+real(xp) :: r1,r2
+complex(xp) :: z1,z2
+
+r2 = 5.0_xp
+r1 = 2.0_xp
+! Real B(OZ)
+write(str,'(b126)') r1
+read (str,'(b126)') r2
+if(r2 /= r1) call abort()
+! Real (B)O(Z)
+r2 = 5.0_xp
+write(str,'(o126)') r1
+read (str,'(o126)') r2
+if(r2 /= r1) call abort()
+! Real (BO)Z
+r2 = 5.0_xp
+write(str,'(z126)') r1
+read (str,'(z126)') r2
+if(r2 /= r1) call abort()
+
+z2 = cmplx(5.0_xp,7.0_xp)
+z1 = cmplx(2.0_xp,3.0_xp)
+! Complex B(OZ)
+write(str,'(2b126)') z1
+read (str,'(2b126)') z2
+if(z2 /= z1) call abort()
+! Complex (B)O(Z)
+z2 = cmplx(5.0_xp,7.0_xp)
+write(str,'(2o126)') z1
+read (str,'(2o126)') z2
+if(z2 /= z1) call abort()
+! Complex (BO)Z
+z2 = cmplx(5.0_xp,7.0_xp)
+write(str,'(2z126)') z1
+read (str,'(2z126)') z2
+if(z2 /= z1) call abort()
+end