<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/69952>69952</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
flang: failure of IO on Windows/MinGW-w64 with separate shared library
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
MehdiChinoune
</td>
</tr>
</table>
<pre>
This example fails to read/write a file on MinGW-w64.
input.f90
```Fortran
module input
implicit none
contains
subroutine read_input(in_unit, i)
integer, intent(in) :: in_unit
integer, intent(out) :: i
read( in_unit, * ) i
end subroutine read_input
end module
```
main.F90
```Fortran
program test
use input
implicit none
integer :: io_unit, i
#ifdef USE_NEWUNIT
open( newunit = io_unit, file = 'input.txt', status = 'unknown', action = 'readwrite' )
#else
io_unit = 20
open( unit = io_unit, file = 'input.txt', status = 'unknown', action = 'readwrite' )
#endif
write(io_unit, *), 10
rewind(io_unit)
call read_input(io_unit, i)
print*, i
end program
```
If both files compiled into single file, It works
```
$ flang -c main.F90
$ flang -c input.f90
$ flang main.o input.o -o test.exe
$ ./test.exe
10
```
but if IO is part of a library then:
```
$ flang -shared input.o -o libtest.dll -Wl,--out-implib=libtest.dll.a
$ flang main.o -o test -ltest -L.
$ ./test.exe
fatal Fortran runtime error(D:/dev/Bugs/fortran/input.f90:7): End of file during input
$ flang -c -DUSE_NEWUNIT main.F90
$ flang main.o -o test -ltest -L.
$ ./test.exe
fatal Fortran runtime error(D:/dev/Bugs/fortran/input.f90:7): Negative unit number is not allowed
```
Note that this example works as expected on Linux/Ubuntu-22.04
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVc1u4zgTfBr60pAgU_49-OCJow8BZjKHb4IcA0psWb1DkwJ_4szbLyjJsmIk2eMukEgwu5rsqq4WhXN01Ig7tvzGloeZCL4xdvcDG0l3DWkTNM5KI__sfjXkAN_EqVUItSDlwBuwKCTjxdmSRxBQk0IwGn6Q_t9zcl4tUpYdWLYn3Qaf1tus_8lWWf9XGOut0P3qycigEDpsvwJAp1ZRRR600dgvVkZ7QdpdIC6U1gRPGrtqXvp8viH9EjR5xu-AGN9e4ACkPR7RdgHtUfdgxrfA8j3L93DJ_DLDxEOuKVdwL8kGJuczvocIHlGo5Sd1d4AY7tW40WsQSpBOi6_FbK05WnECj24kEtx7dT8Qd-Q6EjMTFfvzeE61xBqe_n__8nj__PT48OuSbFrUkbvGc8wClh-mO3T2iGuMr3tL-DfP-DrGnBc-uEs06N_anPUQE5Unoy-xqFZnOMbXMHaW8RyVu9LoT-1yeHZb379RnJZUD3UMgM3kdMb3Ec3vYD5Wa_FMWk5xo4srodSN3c2Hdm8tRbvuJw2M7hrs8aG9HmoojW86QRxU5tSSQhmNYcCRPsb5J4VxxwcPZ2N_uw_3YXwBtRL6CEkFN56dhm4_DmOsyzFD3EBiOjen-IZXZMp48X4VRgVv6imDB6rh4SeQg1ZYD6YGAYpKK-wf8A3qaPp_oOIaYTs1xqIUlV0FUilInhXjd0ligk-68SpZfpgAUvEJyYEcJKp_fU-_4tg_a-GFgmHswQbt6YSA1hrL-OYQyfBC4ivjxbdwdIwX9fCJ4MVV9Hy_jn7J93CvZZSkGwQZLOnj9HPxrmfJYTL9nzb3P8TtEY_C0yv2o6_DqUQbfaCNB6GUOaP8uPPd89F4BN8ID356DXbeBxEXWqw8ynj3fScd3hgvnsqgfUg4T7PFTO5yuc23Yoa7-Wq7yTb5fLmYNbt8vl7KKhP1KpdrPl8uSpnPc6xxWWfLPM9mtOMZz-fxf71YLhfpqqrzdV6L7XyeZVjN2SLDkyCVKvV6So09zsi5gLvVdrvkMyVKVK673TnvmsI4jxe93UV8UkbtFpki5911B09e4a6H5_vutg8WozcefkaKz6SlOUfRx4sezuQbcNgKKzzCMCXDbM2CVbvG-9b1fWO8OJJvQplW5sR4EQ8eXklrzV9Y-djGyCMe0lH5OwAA__8mm53a">