[PATCH] libfortran: Fix up boz_15.f90 on powerpc64le with -mabi=ieeelongdouble [PR106079]

Thomas Koenig tkoenig@netcologne.de
Sun Jul 31 11:01:47 GMT 2022


Hi Jakub,

> The boz_15.f90 test FAILs on powerpc64le-linux when -mabi=ieeelongdouble
> is used (either default through --with-long-double-format=ieee or
> when used explicitly).
> The problem is that the read/write transfer routines are called with
> BT_REAL (or BT_COMPLEX) type and kind 17 which is magic we use to say
> it is the IEEE quad real(kind=16) rather than the IBM double double
> real(kind=16).  For the floating point input/output we then handle kind
> 17 specially, but for B/O/Z we just treat the bytes of the floating point
> value as binary blob and using 17 in that case results in unexpected
> behavior, for write it means we don't estimate right how many chars we'll
> need and print ******************** etc. rather than what we should, and
> even with explicit size we'd print one further byte than intended.
> For read it would even mean overwriting some unrelated byte after the
> floating point object.
> 
> Fixed by using 16 instead of 17 in the read_radix and write_{b,o,z} calls.
> 
> Bootstrapped/regtested on powerpc64le-linux, ok for trunk / 12.2?

OK for both.

Best regards

	Thomas


More information about the Fortran mailing list