Commit 82033483 by Jerry DeLisle

PR90374 Zero width format specifiers.

	PR libfortran/90374
	* io/format.c (parse_format_list): Zero width not allowed with
	FMT_D.
	* io/write_float.def (build_float_string): Include range of
	higher exponent values that require wider width.
parent 7e451387
2020-01-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/90374
* io/format.c (parse_format_list): Zero width not allowed with
FMT_D.
* io/write_float.def (build_float_string): Include range of
higher exponent values that require wider width.
2020-01-01 Jerry DeLisle <jvdelisle@gcc.gnu.org> 2020-01-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/90374 PR libfortran/90374
......
...@@ -954,7 +954,9 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd) ...@@ -954,7 +954,9 @@ parse_format_list (st_parameter_dt *dtp, bool *seen_dd)
} }
tail->u.real.d = fmt->value; tail->u.real.d = fmt->value;
/* Look for optional exponent */ /* Look for optional exponent, not allowed for FMT_D */
if (t == FMT_D)
break;
u = format_lex (fmt); u = format_lex (fmt);
if (u != FMT_E) if (u != FMT_E)
fmt->saved_token = u; fmt->saved_token = u;
......
...@@ -497,7 +497,9 @@ build_float_string (st_parameter_dt *dtp, const fnode *f, char *buffer, ...@@ -497,7 +497,9 @@ build_float_string (st_parameter_dt *dtp, const fnode *f, char *buffer,
else if (f->u.real.e == 0) else if (f->u.real.e == 0)
{ {
/* Zero width specified, no leading zeros in exponent */ /* Zero width specified, no leading zeros in exponent */
if (e > 99 || e < -99) if (e > 999 || e < -999)
edigits = 6;
else if (e > 99 || e < -99)
edigits = 5; edigits = 5;
else if (e > 9 || e < -9) else if (e > 9 || e < -9)
edigits = 4; edigits = 4;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment