[flang-commits] [flang] b30fa1c - [flang] Add entry points for internal scalar list-directed I/O
peter klausler via flang-commits
flang-commits at lists.llvm.org
Fri Jul 17 12:49:51 PDT 2020
Author: peter klausler
Date: 2020-07-17T12:49:06-07:00
New Revision: b30fa1c3dab70c171edfa14f9fdbaa70a30c2060
URL: https://github.com/llvm/llvm-project/commit/b30fa1c3dab70c171edfa14f9fdbaa70a30c2060
DIFF: https://github.com/llvm/llvm-project/commit/b30fa1c3dab70c171edfa14f9fdbaa70a30c2060.diff
LOG: [flang] Add entry points for internal scalar list-directed I/O
BeginInternalListInput and BeginInternalListOutput were missing
from the I/O API implementation; add them.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D84066
Added:
Modified:
flang/runtime/io-api.cpp
Removed:
################################################################################
diff --git a/flang/runtime/io-api.cpp b/flang/runtime/io-api.cpp
index 2163b3bca0d8..0bd827bc53aa 100644
--- a/flang/runtime/io-api.cpp
+++ b/flang/runtime/io-api.cpp
@@ -73,6 +73,32 @@ Cookie IONAME(BeginInternalArrayFormattedInput)(const Descriptor &descriptor,
formatLength, scratchArea, scratchBytes, sourceFile, sourceLine);
}
+template <Direction DIR>
+Cookie BeginInternalListIO(
+ std::conditional_t<DIR == Direction::Input, const char, char> *internal,
+ std::size_t internalLength, void ** /*scratchArea*/,
+ std::size_t /*scratchBytes*/, const char *sourceFile, int sourceLine) {
+ Terminator oom{sourceFile, sourceLine};
+ return &New<InternalListIoStatementState<DIR>>{oom}(
+ internal, internalLength, sourceFile, sourceLine)
+ .release()
+ ->ioStatementState();
+}
+
+Cookie IONAME(BeginInternalListOutput)(char *internal,
+ std::size_t internalLength, void **scratchArea, std::size_t scratchBytes,
+ const char *sourceFile, int sourceLine) {
+ return BeginInternalListIO<Direction::Output>(internal, internalLength,
+ scratchArea, scratchBytes, sourceFile, sourceLine);
+}
+
+Cookie IONAME(BeginInternalListInput)(const char *internal,
+ std::size_t internalLength, void **scratchArea, std::size_t scratchBytes,
+ const char *sourceFile, int sourceLine) {
+ return BeginInternalListIO<Direction::Input>(internal, internalLength,
+ scratchArea, scratchBytes, sourceFile, sourceLine);
+}
+
template <Direction DIR>
Cookie BeginInternalFormattedIO(
std::conditional_t<DIR == Direction::Input, const char, char> *internal,
@@ -90,7 +116,6 @@ Cookie IONAME(BeginInternalFormattedOutput)(char *internal,
std::size_t internalLength, const char *format, std::size_t formatLength,
void **scratchArea, std::size_t scratchBytes, const char *sourceFile,
int sourceLine) {
- Terminator oom{sourceFile, sourceLine};
return BeginInternalFormattedIO<Direction::Output>(internal, internalLength,
format, formatLength, scratchArea, scratchBytes, sourceFile, sourceLine);
}
@@ -99,7 +124,6 @@ Cookie IONAME(BeginInternalFormattedInput)(const char *internal,
std::size_t internalLength, const char *format, std::size_t formatLength,
void **scratchArea, std::size_t scratchBytes, const char *sourceFile,
int sourceLine) {
- Terminator oom{sourceFile, sourceLine};
return BeginInternalFormattedIO<Direction::Input>(internal, internalLength,
format, formatLength, scratchArea, scratchBytes, sourceFile, sourceLine);
}
More information about the flang-commits
mailing list