aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2017-12-03 16:47:12 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2017-12-03 16:47:12 +0000
commitc4508d0ad7fb8fe23517a6b5e874c4573fdec8a0 (patch)
tree20e444c84db177bd87ead91a4dd32bcdd4acf3c4 /gcc
parent7c731281574f7d89c6fed487fe646176603ad98f (diff)
downloadgcc-c4508d0ad7fb8fe23517a6b5e874c4573fdec8a0.zip
gcc-c4508d0ad7fb8fe23517a6b5e874c4573fdec8a0.tar.gz
gcc-c4508d0ad7fb8fe23517a6b5e874c4573fdec8a0.tar.bz2
re PR fortran/83191 (Writing a namelist with repeated complex numbers)
2017-12-03 Jerry DeLisle <jvdelisle@gcc.gnu.org> Dominique d'Humieres <dominiq@lps.ens.fr> PR libgfortran/83191 * io/transfer.c (list_formatted_read_scalar): Do not set namelist_mode bit here. (namelist_read): Likewise. (data_transfer_init): Clear the mode bit here. (finalize_transfer): Do set the mode bit just before any calls to namelist_read or namelist_write. It can now be referred to in complex_write. ^ io/write.c (write_complex): Suppress the leading blanks when namelist_mode bit is not set to 1. * gfortran.dg/namelist_95.f90: New test. Co-Authored-By: Dominique d'Humieres <dominiq@lps.ens.fr> From-SVN: r255365
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_95.f9023
2 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0a8ed92..792d1b9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-12-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/831916
+ * gfortran.dg/namelist_95.f90: New test.
+
2017-12-01 Jan Hubicka <hubicka@ucw.cz>
PR target/81616
diff --git a/gcc/testsuite/gfortran.dg/namelist_95.f90 b/gcc/testsuite/gfortran.dg/namelist_95.f90
new file mode 100644
index 0000000..5956648
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/namelist_95.f90
@@ -0,0 +1,23 @@
+! { dg-do run }
+! PR83191 Writing a namelist with repeated complex
+
+program test
+
+implicit none
+
+integer, parameter :: UNIT = 1
+character(len=8), parameter :: FILE = "namelist"
+
+complex, dimension(3) :: a = (/ (0.0, 0.0), (0.0, 0.0), (3.0, 4.0) /)
+
+namelist /complex_namelist/ a
+
+open(UNIT, file=FILE)
+write(UNIT, nml=complex_namelist)
+close(UNIT)
+
+open(UNIT, file=FILE)
+read(UNIT, nml=complex_namelist)
+close(UNIT, status="delete")
+if (any(a.ne.(/ (0.0, 0.0), (0.0, 0.0), (3.0, 4.0) /))) call abort
+end program test