diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-02-07 07:50:17 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-02-07 07:50:17 +0000 |
commit | 791e8c9c76380624c9257f7b7dac9707b1793ca2 (patch) | |
tree | 4ed5383851b54f510be811845facae399f47f9e7 /gcc | |
parent | 6c076a6c42817b0462e8e22897bf8a398ca53ca9 (diff) | |
download | gcc-791e8c9c76380624c9257f7b7dac9707b1793ca2.zip gcc-791e8c9c76380624c9257f7b7dac9707b1793ca2.tar.gz gcc-791e8c9c76380624c9257f7b7dac9707b1793ca2.tar.bz2 |
re PR libfortran/42742 (Handle very large format strings correctly)
2010-02-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/42742
* gfortran.dg/fmt_cache_2.f: New test.
From-SVN: r156569
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/fmt_cache_2.f | 36 |
2 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 78d261d..d50b950 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2010-02-06 Jerry DeLisle <jvdelisle@gcc.gnu.org> + PR libfortran/42742 + * gfortran.dg/fmt_cache_2.f: New test. + +2010-02-06 Jerry DeLisle <jvdelisle@gcc.gnu.org> + * gfortran.dg/read_no_eor.f90: New test. 2010-02-05 Jason Merrill <jason@redhat.com> diff --git a/gcc/testsuite/gfortran.dg/fmt_cache_2.f b/gcc/testsuite/gfortran.dg/fmt_cache_2.f new file mode 100644 index 0000000..f557a16 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/fmt_cache_2.f @@ -0,0 +1,36 @@ +! { dg-do run } +! PR42742 Handle very large format strings correctly +! Test derived from example developed by Manfred Schwarb. + character(12) bufarr(74) + character(74*13+30) fmtstr,fmtstr2 + character(1) delim + integer i,j,dat(5),pindx, loopcounter + character(983) big_string ! any less and this test fails. + + do i=1,74 + write(bufarr(i),'(i12)') i + enddo + + delim=" " + dat(1)=2009 + dat(2)=10 + dat(3)=31 + dat(4)=3 + dat(5)=0 + fmtstr="(i2,i6,4(a1,i2.2)" + open(10, status="scratch") + do j=1,74 + fmtstr=fmtstr(1:len_trim(fmtstr))//",a1,a12" + fmtstr2=fmtstr(1:len_trim(fmtstr))//")" +c write(0,*) "interation ",j,": ",len_trim(fmtstr2) + do i=1,10 + write(10,fmtstr2) + & i,dat(1),"-",dat(2),"-",dat(3), + & delim,dat(4),":",dat(5), + & (delim,bufarr(pindx),pindx=1,j) + enddo + loopcounter = j + enddo + close(10) + if (loopcounter /= 74) call abort + end |