diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2017-05-29 19:17:57 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2017-05-29 19:17:57 +0000 |
commit | fd262197d74626579a784ee1cc0f3f3a0e3f33e9 (patch) | |
tree | 92cfd1b6d2284c50ad86327360b617f65d955161 /gcc | |
parent | a5cfa13ab9ef5b9a740129fca6b73acea436c493 (diff) | |
download | gcc-fd262197d74626579a784ee1cc0f3f3a0e3f33e9.zip gcc-fd262197d74626579a784ee1cc0f3f3a0e3f33e9.tar.gz gcc-fd262197d74626579a784ee1cc0f3f3a0e3f33e9.tar.bz2 |
re PR fortran/53029 (missed optimization in internal read (without implied-do-loop))
2017-05-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/53029
* list_read.c (list_formatted_read_scala): Set the err return
value to the common.flags error values.
* gfortran.dg/read_5.f90: New test.
From-SVN: r248577
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/read_5.f90 | 21 |
2 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4eb53a7..58dd05b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-05-29 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR libgfortran/53029 + * gfortran.dg/read_5.f90: New test. + 2017-05-29 Nathan Sidwell <nathan@acm.org> PR c++/80891 (#4) diff --git a/gcc/testsuite/gfortran.dg/read_5.f90 b/gcc/testsuite/gfortran.dg/read_5.f90 new file mode 100644 index 0000000..81f1f11 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_5.f90 @@ -0,0 +1,21 @@ +! { dg-do run } +! PR53029 Missed optimization, this test case took several seconds to + program internalread + implicit none + integer m + parameter(m=1000000) + character value*10 + character(80) :: result + integer i,j,intvalues(m) + real :: start, finish + intvalues = 33 + call cpu_time(start) + do j=1,100 + write(value,'(i3,a5)') j," 5 69" + read(value,*,end=20) intvalues + 20 write(result,*) (intvalues(i),i=2,4) + if (result.ne.(' 5 69 33')) call abort + call cpu_time(finish) + if ((finish-start).gt. 0.5) call abort + enddo + end program internalread |