re PR fortran/37834 (write(*,'(f0.0)') 0.0 prints "." instead of "0.")

2008-10-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org

	PR libfortran/37834
	* io/write_float.def (output_float): Emit '0.' for special case of
	format specifier 'f0.0' and value of zero. Likewise emit '0' for 'f1.0'.

From-SVN: r141231
This commit is contained in:
Jerry DeLisle 2008-10-19 18:36:21 +00:00
parent a15138a45f
commit f13c001e1a
2 changed files with 22 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2008-10-19 Jerry DeLisle <jvdelisle@gcc.gnu.org
PR libfortran/37834
* io/write_float.def (output_float): Emit '0.' for special case of
format specifier 'f0.0' and value of zero. Likewise emit '0' for 'f1.0'.
2008-10-17 Jerry DeLisle <jvdelisle@gcc.gnu.org
PR libfortran/37863

View File

@ -119,6 +119,22 @@ output_float (st_parameter_dt *dtp, const fnode *f, char *buffer, size_t size,
sign = calculate_sign (dtp, sign_bit);
else
sign = calculate_sign (dtp, 0);
/* Handle special cases. */
if (w == 0)
w = 2;
/* For this one we choose to not output a decimal point.
F95 10.5.1.2.1 */
if (w == 1 && ft == FMT_F)
{
out = write_block (dtp, w);
if (out == NULL)
return;
*out = '0';
return;
}
}
/* Normalize the fractional component. */