Fortran: Fix B64.0 formatted write output.
PR fortran/117820 libgfortran/ChangeLog: * io/write.c (write_b): Add test for zero needed by write_boz. gcc/testsuite/ChangeLog: * gfortran.dg/pr117820.f90: New test.
This commit is contained in:
parent
f36cb8c79d
commit
7a92ba7668
2 changed files with 14 additions and 0 deletions
10
gcc/testsuite/gfortran.dg/pr117820.f90
Normal file
10
gcc/testsuite/gfortran.dg/pr117820.f90
Normal file
|
@ -0,0 +1,10 @@
|
|||
! { dg-do run }
|
||||
! See pr117820, original testcase provided by Malcolm Cohen.
|
||||
program test
|
||||
integer(8) :: x
|
||||
character(80) :: output
|
||||
output = "garbage"
|
||||
x = ibset (0_8, 63)
|
||||
write(output, '("<",B64.0,">")') x
|
||||
if (output .ne. "<1000000000000000000000000000000000000000000000000000000000000000>") stop 1
|
||||
end program
|
|
@ -1392,6 +1392,10 @@ write_b (st_parameter_dt *dtp, const fnode *f, const char *source, int len)
|
|||
{
|
||||
n = extract_uint (source, len);
|
||||
p = btoa (n, itoa_buf, sizeof (itoa_buf));
|
||||
|
||||
/* Test for zero. Needed by write_boz. */
|
||||
if (n != 0)
|
||||
n = 1;
|
||||
write_boz (dtp, f, p, n, len);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue