diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2017-05-17 20:33:20 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2017-05-17 20:33:20 +0000 |
commit | 7f72e40263afd8d3e651a1a4ec3d5da9bc8eedd7 (patch) | |
tree | 29800b9a3654c094d28b76ab48c3fe336be322ce /gcc | |
parent | 7ded3472ae5e5eec41909fcefc911e1092479f9b (diff) | |
download | gcc-7f72e40263afd8d3e651a1a4ec3d5da9bc8eedd7.zip gcc-7f72e40263afd8d3e651a1a4ec3d5da9bc8eedd7.tar.gz gcc-7f72e40263afd8d3e651a1a4ec3d5da9bc8eedd7.tar.bz2 |
re PR fortran/80741 ([Regression 7/8] DTIO wrong code causes incorrect behaviour of namelist READ)
2017-05-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/80741
* transfer.c (finalize_transfer): Reset last_char to 'empty'.
* file_pos.c (formatted_backspace): Likewise.
(st_endfile): Likewise.
(st_rewind): Likewise.
(st_flush): Likewise.
PR fortran/80741
* trans-io.c (transfer_namelist_element): Change check from
NULL_TREE to null_pointer_node.
From-SVN: r248170
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-io.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/read_4.f90 | 35 |
3 files changed, 42 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e978f32..703060d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2017-05-17 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/80741 + * trans-io.c (transfer_namelist_element): Change check from + NULL_TREE to null_pointer_node. + 2017-05-17 Fritz Reese <fritzoreese@gmail.com> PR fortran/80668 diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 1b70136..c557c11 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -1756,7 +1756,7 @@ transfer_namelist_element (stmtblock_t * block, const char * var_name, else tmp = build_int_cst (gfc_charlen_type_node, 0); - if (dtio_proc == NULL_TREE) + if (dtio_proc == null_pointer_node) tmp = build_call_expr_loc (input_location, iocall[IOCALL_SET_NML_VAL], 6, dt_parm_addr, addr_expr, string, diff --git a/gcc/testsuite/gfortran.dg/read_4.f90 b/gcc/testsuite/gfortran.dg/read_4.f90 new file mode 100644 index 0000000..7a835b1 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_4.f90 @@ -0,0 +1,35 @@ +! { dg-do run } +! PR80741 wrong code causes incorrect behaviour of namelist READ +program p + use, intrinsic :: iso_fortran_env, only: iostat_end + implicit none + integer :: x, y, ios, io + character(10) :: line + namelist /test/ x, y + + x = 10 + y = 10 + ios = 0 + io = 10 + open(unit=io, status='scratch') + write(io, test) + write(io, *) 'done' + rewind(io) + x = 0 + y = 0 + read(io, test) + if (x.ne.10 .or. y.ne.10) call abort + ! + read(io, *) line + if (line.ne.'done') call abort + ! + read(io, *, iostat=ios) line + if (ios/=iostat_end) call abort + rewind(io) + x = 0 + y = 0 + read(io, test) + if (x.ne.10 .or. y.ne.10) call abort + read(io, *, iostat=ios) line + if (line.ne.'done') call abort +end |