deb62f5ad6
Now that the requirements and implementation of asynchronous I/O are better understood, adjust their I/O runtime APIs. In particular: 1) Remove the BeginAsynchronousOutput/Input APIs; they're not needed, since any data transfer statement might have ASYNCHRONOUS= and (if ASYNCHRONOUS='YES') ID= control list specifiers that need to at least be checked. 2) Add implementations for BeginWait(All) to check for the error case of a bad unit number and nonzero ID=. 3) Rearrange and comment SetAsynchronous so that it's clear that it can be called for READ/WRITE as well as for OPEN. The implementation remains completely synchronous, but should be conforming. Where opportunities make sense for true asynchronous implementations of some big block transfers without SIZE= in the future, we'll need to add a GetAsynchronousId API to capture ID= on a READ or WRITE; add sourceFile and sourceLine arguments to BeginWait(All) for good error reporting; track pending operations in unit.h; and add code to force synchronization to non-asynchronous I/O operations. Lowering should call SetAsynchronous when ASYNCHRONOUS= appears as a control list specifier. It should also set ID=x variables to 0 until such time as we support asynchronous operations, if ever. This patch only removes the removed APIs from lowering. Differential Revision: https://reviews.llvm.org/D126143 |
||
---|---|---|
.. | ||
FortranMain | ||
allocatable.cpp | ||
assign.cpp | ||
buffer.cpp | ||
buffer.h | ||
character.cpp | ||
CMakeLists.txt | ||
command.cpp | ||
complex-reduction.c | ||
complex-reduction.h | ||
config.h.cmake | ||
connection.cpp | ||
connection.h | ||
copy.cpp | ||
copy.h | ||
derived-api.cpp | ||
derived.cpp | ||
derived.h | ||
descriptor-io.cpp | ||
descriptor-io.h | ||
descriptor.cpp | ||
dot-product.cpp | ||
edit-input.cpp | ||
edit-input.h | ||
edit-output.cpp | ||
edit-output.h | ||
environment.cpp | ||
environment.h | ||
extensions.cpp | ||
extrema.cpp | ||
file.cpp | ||
file.h | ||
findloc.cpp | ||
format-implementation.h | ||
format.cpp | ||
format.h | ||
inquiry.cpp | ||
internal-unit.cpp | ||
internal-unit.h | ||
io-api.cpp | ||
io-error.cpp | ||
io-error.h | ||
io-stmt.cpp | ||
io-stmt.h | ||
iostat.cpp | ||
ISO_Fortran_binding.cpp | ||
lock.h | ||
main.cpp | ||
matmul.cpp | ||
memory.cpp | ||
misc-intrinsic.cpp | ||
namelist.cpp | ||
namelist.h | ||
numeric.cpp | ||
pointer.cpp | ||
product.cpp | ||
ragged.cpp | ||
random.cpp | ||
reduction-templates.h | ||
reduction.cpp | ||
stat.cpp | ||
stat.h | ||
stop.cpp | ||
sum.cpp | ||
support.cpp | ||
terminator.cpp | ||
terminator.h | ||
time-intrinsic.cpp | ||
tools.cpp | ||
tools.h | ||
transformational.cpp | ||
type-code.cpp | ||
type-info.cpp | ||
type-info.h | ||
unit-map.cpp | ||
unit-map.h | ||
unit.cpp | ||
unit.h | ||
utf.cpp | ||
utf.h |