Re: [PATCH] Fortran: [PR93727] Add EX format READ (read_ex)

Jerry D <[email protected]> Wed, 10 Jun 2026 20:37:45 -0700
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
The master branch has been updated by Jerry DeLisle <[email protected]>:

https://gcc.gnu.org/g:77d5b22efb2b0c291b572f087371d7dc462d5499

commit r17-1487-g77d5b22efb2b0c291b572f087371d7dc462d5499
Author: Jerry DeLisle <[email protected]>
Date:   Mon May 25 21:13:19 2026 -0700

On 6/7/26 11:53 AM, Jerry D wrote:
> On 6/7/26 11:37 AM, Harald Anlauf wrote:
>> Hi Jerry!
>>
>> Am 03.06.26 um 10:42 PM schrieb Jerry D:
>>> The following implements the last of the EX formatting work. The attached 
>>> patch has been regression tested on x86_64. The test case provided round trip 
>>> testing to ensure what we read is what we wrote.
>>>
>>> OK for mainline?
>>
>> Works here, LGTM.  OK for mainline.
>>
>> The only missing piece seems to be for list-directed read,
>> see in particular F2023:13.7.2.3.2 F editing, clause (7).
>>
>> (Intel and NAG support this.)
>>
>> Thanks for the great work!
>>
>> Harald
> 
> Thanks Harald. Next on the list will be the list_read part.
> 
> Regards,
> 
> Jerry
> 
>>
>>> Best regards,
>>>
>>> Jerry
>>> ---
>>> Fortran: [PR93727] Add EX format READ (read_ex)
>>>
>>> Implement read_ex in libgfortran to handle EX edit-descriptor input
>>> per Fortran 2023 13.7.2.3.6.  The input field may contain:
>>>
>>>    * a hexadecimal-significand form (0X<sig>P<exp>) passed directly
>>>      to the C strtod/strtold family for exact bit-for-bit conversion;
>>>    * any form acceptable for Fw.d input (decimal fallback), including
>>>      INF and NAN representations.
>>>
>>> For decimal input without a decimal point the d field of the EX.w.d
>>> descriptor adjusts the exponent exactly as for Fw.d.  BN/BZ blank
>>> handling and the kP scale factor are also supported via the shared
>>> decimal path.
>>>
>>> Assisted by: Claude Sonnet 4.6
>>>
>>>      PR fortran/93727
>>>
>>> libgfortran/ChangeLog:
>>>
>>>      * io/read.c (read_ex): New function implementing EX format read.
>>>      * io/io.h (read_ex): Declare.
>>>      * io/transfer.c (formatted_transfer_scalar_read): Add FMT_EX case
>>>      dispatching to read_ex.
>>>
>>> gcc/testsuite/ChangeLog:
>>>
>>>      * gfortran.dg/EXformat_4.F90: New test covering EX format read
>>>      for kind=4 and 8 (always) and kind=10, 16 (when available):
>>>      hex-significand literals, lowercase prefix, negative binary
>>>      exponent, decimal fallback, d-field adjustment, INF/NAN, zero
>>>      field, and round-trips through write_ex.
>>> ---
>>
> 
>