[Bug fortran/25829] [F03] Asynchronous IO support

koenigni at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Apr 28 12:36:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25829

--- Comment #36 from Nicolas Koenig <koenigni at gcc dot gnu.org> ---
There seems to be a mismatch between the front end and the library.

For

program main
  integer :: id
  character(len=50) :: iomsg
  integer :: iostat
  id = 0
  open(10,file="wait.dat",iostat=iostat,iomsg=iomsg, asynchronous="yes")
  wait (10,id=id)
end program main

the front end generates

    struct __st_parameter_wait wait_parm.1;

    wait_parm.1.common.filename = &"wait.f90"[1]{lb: 1 sz: 1};
    wait_parm.1.common.line = 7;
    wait_parm.1.id = (integer(kind=4) *) (integer(kind=8)) id;
    wait_parm.1.common.flags = 128;
    wait_parm.1.common.unit = 10;
    _gfortran_st_wait (&wait_parm.1);

where the type conversions are strange. The library then receives

(gdb) p *wtp
$1 = {common = {flags = 128, unit = 10, filename = 0x428d70 "wait.f90", line =
7, iomsg_len = 50, iomsg = 0x7fffffffdc90 "\377\377\377\377", 
    iostat = 0x7fffffffdc8c}, id = 0x0, id_len = 8}

so some adjustment of

typedef struct
{
  st_parameter_common common;
  CHARACTER1 (id);
}
st_parameter_wait;

is probably required.


More information about the Gcc-bugs mailing list