diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b44c815dcf758a05d0d16fae7b4b91634fcf4aee..f437418d335f5f9a2f5833b6ea9f11d3f3556c78 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2006-01-24 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/25835 + * gfortran.dg/read_eof_1.f90: Rename from read_eof_1.f90. + * gfortran.dg/read_eof_2.f90: New test. + * gfortran.dg/read_eof_3.f90: New test. + 2006-01-24 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/25860 diff --git a/gcc/testsuite/gfortran.dg/read_eof_1.f90 b/gcc/testsuite/gfortran.dg/read_eof_1.f90 new file mode 100644 index 0000000000000000000000000000000000000000..b5c49016a4aaabc58ce98e7c05cd1c6c0ea31a31 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_eof_1.f90 @@ -0,0 +1,27 @@ +! { dg-do run } +! PR25697 Check that reading from a file that is at end-of-file does not +! segfault or give error. Test case derived from example in PR from Dale Ranta. +! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org> + integer data(9) + do i = 1,9 + data(i)=-3 + enddo + open(unit=11,status='scratch',form='unformatted') + write(11)data + read(11,end= 1000 )data + call abort() + 1000 continue + backspace 11 + backspace 11 + write(11)data + rewind 11 + data = 0 + read(11,end= 1001 )data + 1001 continue + read(11,end= 1002 )data + call abort + 1002 continue + if (.not. all(data == -3)) call abort() + close(11) + end + diff --git a/gcc/testsuite/gfortran.dg/read_eof_2.f90 b/gcc/testsuite/gfortran.dg/read_eof_2.f90 new file mode 100644 index 0000000000000000000000000000000000000000..9017548d463d1b659bfed0e6a0328c5b0adf5c83 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_eof_2.f90 @@ -0,0 +1,21 @@ +! { dg-do run } +! PR25835 Check that reading from a file that is at end-of-file does not +! segfault or give error. Test case derived from example in PR from Dale Ranta. +! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org> + integer data(2045) ! Exceed internal buffer size + data=-1 + open(unit=11,status='scratch', form='unformatted') + write(11)data + read(11,end= 1000 )data + call abort() + 1000 continue + backspace 11 + backspace 11 + data = 0 + read(11)data + if (.not. all(data == -1)) call abort() + read(11,end= 1002 )data + call abort() + 1002 continue + close(11) + end diff --git a/gcc/testsuite/gfortran.dg/read_eof_3.f90 b/gcc/testsuite/gfortran.dg/read_eof_3.f90 new file mode 100644 index 0000000000000000000000000000000000000000..5cca802c2a66f90d47b5ba5d7044347060cfbc3f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_eof_3.f90 @@ -0,0 +1,31 @@ +! { dg-do run } +! PR25835 Check that reading from a file that is at end-of-file does not +! segfault or give error. Test case derived from example in PR from Dale Ranta. +! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org> + integer data(5000) + data=-256 + open(unit=11,status='scratch', form='unformatted') + write(11)data + write(11)data + read(11,end= 1000 )data + call abort() + 1000 continue + backspace 11 + rewind 11 + write(11)data + read(11,end= 1001 )data + call abort() + 1001 continue + data = 0 + backspace 11 + rewind 11 + read(11,end= 1002 )data + if (.not. all(data == -256)) call abort() + 1002 continue + read(11,end= 1003 )data + call abort() + 1003 continue + close(11) + end + +