[Bug fortran/70235] [4.9/5/6 Regression] Incorrect output with PF format
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Mar 17 09:39:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70235
--- Comment #7 from Tobias Burnus <burnus at gcc dot gnu.org> ---
(In reply to Jerry DeLisle from comment #4)
> I will get started on this one. Dominique, if you spot the problem let me
> know.
In determine_precision, one has:
int precision = f->u.real.d; // "3" as "F8.3" is used
case FMT_F:
precision += dtp->u.p.scale_factor; // 3 += -6 -> -3
precision += 2 * len + 4; // -3 += 2 * 8 + 4 -> 17 ("8" from "F8.3")
i.e. one increased the precision for later manual rounding.
And later in "output_float"
else /* p < 0 */
if (nbefore + p >= 0) // False as 5 + (-6) < -1
else
nafter = d + nbefore;
which sets nafter to 3 + 5 = 8. One then later has:
nblanks = w - (nbefore + nzero + nafter + edigits + 1);
// -2 = 8 - (0+1+8+0+1)
as nblanks < 0, one get the "********".
My gut feeling is that it has something to do with having "precision" == 17 in
that function. In any case, the nafter is too large when nblanks is calculated.
More information about the Gcc-bugs
mailing list