diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/fmt_cache_2.f')
-rw-r--r-- | gcc/testsuite/gfortran.dg/fmt_cache_2.f | 36 |
1 files changed, 36 insertions, 0 deletions
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 000000000..f557a166c --- /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 |