mirror of git://gcc.gnu.org/git/gcc.git
Fortran: Final cleanup of zero width formats [PR90374]
PR libfortran/90374 libgfortran/ChangeLog: PR libfortran/90374 * io/format.c (parse_format_list): Set exponent width to unspecified. gcc/testsuite/ChangeLog: PR libfortran/90374 * gfortran.dg/fmt_error_10.f: Update test case to pass. * gfortran.dg/fmt_zero_width.f90: Likewise. * gfortran.dg/pr111022.f90: Likewise. * gfortran.dg/pr96436_4.f90: Likewise. * gfortran.dg/pr96436_5.f90: Likewise.
This commit is contained in:
parent
52a24bcecd
commit
f9b36634b0
|
|
@ -14,12 +14,13 @@
|
|||
|
||||
write (line,'(1pd24.15e6)',iostat=istat, iomsg=msg) 1.0d0, 1.234 ! { dg-warning "Period required" }
|
||||
if (istat.ne.0) STOP 3
|
||||
if (line.ne." 1.000000000000000D+001.E+00") STOP 4
|
||||
if (line.ne." 1.000000000000000D+001.E+00") STOP 2
|
||||
|
||||
str = '(1pd0.15)'
|
||||
write (line,str,iostat=istat, iomsg=msg) 1.0d0
|
||||
if (line.ne."1.000000000000000D+0") STOP 5
|
||||
if (line.ne."1.000000000000000D+000") STOP 4
|
||||
read (*,str,iostat=istat, iomsg=msg) x
|
||||
|
||||
if (istat.ne.5006 .or. msg(1:10).ne."Zero width") STOP 6
|
||||
if (x.ne.555.25) STOP 7
|
||||
|
||||
|
|
|
|||
|
|
@ -9,32 +9,32 @@ program pr90374
|
|||
rn = 0.00314_4
|
||||
afmt = "(D0.3)"
|
||||
write (aresult,fmt=afmt) rn
|
||||
if (aresult /= "0.314D-2") stop 12
|
||||
if (aresult /= "0.314D-02") stop 12
|
||||
afmt = "(E0.10)"
|
||||
write (aresult,fmt=afmt) rn
|
||||
if (aresult /= "0.3139999928E-2") stop 15
|
||||
if (aresult /= "0.3139999928E-02") stop 15
|
||||
afmt = "(ES0.10)"
|
||||
write (aresult,fmt=afmt) rn
|
||||
if (aresult /= "3.1399999280E-3") stop 18
|
||||
if (aresult /= "3.1399999280E-03") stop 18
|
||||
afmt = "(EN0.10)"
|
||||
write (aresult,fmt=afmt) rn
|
||||
if (aresult /= "3.1399999280E-3") stop 21
|
||||
if (aresult /= "3.1399999280E-03") stop 21
|
||||
afmt = "(G0.10)"
|
||||
write (aresult,fmt=afmt) rn
|
||||
if (aresult /= "0.3139999928E-2") stop 24
|
||||
if (aresult /= "0.3139999928E-02") stop 24
|
||||
afmt = "(E0.10e0)"
|
||||
write (aresult,fmt=afmt) rn
|
||||
if (aresult /= "0.3139999928E-2") stop 27
|
||||
write (aresult,fmt="(D0.3)") rn
|
||||
if (aresult /= "0.314D-2") stop 29
|
||||
if (aresult /= "0.314D-02") stop 29
|
||||
write (aresult,fmt="(E0.10)") rn
|
||||
if (aresult /= "0.3139999928E-2") stop 31
|
||||
if (aresult /= "0.3139999928E-02") stop 31
|
||||
write (aresult,fmt="(ES0.10)") rn
|
||||
if (aresult /= "3.1399999280E-3") stop 33
|
||||
if (aresult /= "3.1399999280E-03") stop 33
|
||||
write (aresult,fmt="(EN0.10)") rn
|
||||
if (aresult /= "3.1399999280E-3") stop 35
|
||||
if (aresult /= "3.1399999280E-03") stop 35
|
||||
write (aresult,fmt="(G0.10)") rn
|
||||
if (aresult /= "0.3139999928E-2") stop 37
|
||||
if (aresult /= "0.3139999928E-02") stop 37
|
||||
write (aresult,fmt="(E0.10e0)") rn
|
||||
if (aresult /= "0.3139999928E-2") stop 39
|
||||
write (aresult,fmt="(E0.10e3)") rn
|
||||
|
|
|
|||
|
|
@ -60,13 +60,13 @@ program pr111022
|
|||
write(buffer,"(E0.3E0)") .6660_4
|
||||
if (buffer.ne."0.666E+0") stop 27
|
||||
write(buffer,"(E0.3)") .6660_4
|
||||
if (buffer.ne."0.666E+0") stop 28
|
||||
if (buffer.ne."0.666E+00") stop 28
|
||||
write(buffer,"(E0.1E0)") .6660_4
|
||||
if (buffer.ne."0.7E+0") stop 29
|
||||
write(buffer,"(E0.1)") .6660_4
|
||||
if (buffer.ne."0.7E+0") stop 30
|
||||
if (buffer.ne."0.7E+00") stop 30
|
||||
write(buffer,"(E0.5E0)") .6660_4
|
||||
if (buffer.ne."0.66600E+0") stop 31
|
||||
write(buffer,"(E0.5)") .6660_4
|
||||
if (buffer.ne."0.66600E+0") stop 32
|
||||
if (buffer.ne."0.66600E+00") stop 32
|
||||
end program pr111022
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
! { dg-options "-std=f2018 -pedantic" }
|
||||
|
||||
character(20) :: fmt
|
||||
character(9) :: buffer
|
||||
character(12) :: buffer
|
||||
fmt = "(1a1,f0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">3.00<") stop 1
|
||||
|
|
@ -11,15 +11,15 @@ write(buffer,fmt) ">", 0.3, "<"
|
|||
if (buffer.ne.">0.30<") stop 2
|
||||
fmt = "(1a1,d0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">0.30D+1<") stop 3
|
||||
if (buffer.ne.">0.30D+01<") stop 3
|
||||
fmt = "(1a1,e0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">0.30E+1<") stop 4
|
||||
if (buffer.ne.">0.30E+01<") stop 4
|
||||
fmt = "(1a1,en0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">3.00E+0<") stop 5
|
||||
if (buffer.ne.">3.00E+00<") stop 5
|
||||
fmt = "(1a1,es0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">3.00E+0<") stop 6
|
||||
if (buffer.ne.">3.00E+00<") stop 6
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
! { dg-options "-pedantic" }
|
||||
|
||||
character(20) :: fmt
|
||||
character(9) :: buffer
|
||||
character(12) :: buffer
|
||||
fmt = "(1a1,f0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">3.00<") stop 1
|
||||
|
|
@ -11,15 +11,15 @@ write(buffer,fmt) ">", 0.30, "<"
|
|||
if (buffer.ne.">0.30<") stop 2
|
||||
fmt = "(1a1,d0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">0.30D+1<") stop 3
|
||||
if (buffer.ne.">0.30D+01<") stop 3
|
||||
fmt = "(1a1,e0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">0.30E+1<") stop 4
|
||||
if (buffer.ne.">0.30E+01<") stop 4
|
||||
fmt = "(1a1,en0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">3.00E+0<") stop 5
|
||||
if (buffer.ne.">3.00E+00<") stop 5
|
||||
fmt = "(1a1,es0.2,1a1)"
|
||||
write(buffer,fmt) ">", 3.0, "<"
|
||||
if (buffer.ne.">3.00E+0<") stop 6
|
||||
if (buffer.ne.">3.00E+00<") stop 6
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -945,6 +945,7 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
|
|||
goto finished;
|
||||
}
|
||||
tail->u.real.w = 0;
|
||||
tail->u.real.e = -1;
|
||||
|
||||
/* Look for the dot seperator. */
|
||||
u = format_lex (fmt);
|
||||
|
|
|
|||
Loading…
Reference in New Issue