6 Commits

Author SHA1 Message Date
Peter Klausler
2326a02357
[flang] Support read-only access to an anonymous unit (#105859)
Don't require the "fort.123" file implicitly opened by READ(123, ... to
be writable.
2024-08-26 10:52:19 -07:00
Peter Klausler
eac925fb81
[flang][runtime] Better handling of "fort.N" opening errors (#96347)
When a data transfer statement references a unit number that hasn't been
explicitly OPENed, the runtime I/O support library opens a local
"fort.N" file where N is the unit number. If that name exists in the
current working directory but is not a readable or writable file (as
appropriate), the runtime needs to catch the error at the point of the
READ or WRITE statement rather than leaving an open unit in the unit map
without a valid file descriptor.
2024-06-24 10:34:37 -07:00
Peter Klausler
a8f2d185b2
[flang][runtime] Resilient opening of anonymous unit (#93876)
When an I/O statement references a unit number that has not been
explicitly opened or predefined, the I/O runtime support library opens a
local "fort.N" file. If this fails, the program crashes, even when the
I/O statement has IOSTAT= or IOMSG= or ERR= control list items. Connect
the dots to enable resilience in these cases.
2024-06-03 14:23:50 -07:00
Peter Klausler
975579bd94
[flang] Fix variable unformatted I/O bug with output after input (#92828)
When reading variable-length unformatted records, the external I/O
library frames the input buffer so that the footer of the previous
record remains in frame. This is done so that a BACKSPACE doesn't have
to do an extra read to get the length of the previous record before
repositioning over it.

When switching from input to output to overwrite or append new records
after reading any, it is necessary to undo this framing of the last word
in the previous record, since the new output isn't going to define it in
the buffer and it'll be overwritten in the filesystem with garbage.
2024-05-23 15:32:14 -07:00
Slava Zakharin
8ebf741136
[flang][runtime] Prepare enabling PRINT of integer32 for device. (#86247)
This commit adds required files into the offload build closure,
which means adding RT_API_ATTRS and other markers.

The implementation does not work for CUDA yet, because of
std::variant,swap,reverse usage. These issues will be resolved
separately (e.g. by using libcudacxx header files).
2024-03-25 16:01:25 -07:00
Slava Zakharin
00f3454bbe
[flang][runtime] Added pseudo file unit for simplified PRINT. (#86134)
A file unit is emulated via a temporary buffer that accumulates
the output, which is printed out via std::printf at the end
of the IO statement. This implementation will be used for the offload
devices.
2024-03-21 15:12:31 -07:00