[flang-commits] [flang] c5729f2 - [flang] Set default form if unspecified at end of OPEN statement
Jean Perier via flang-commits
flang-commits at lists.llvm.org
Tue Aug 31 23:41:04 PDT 2021
Author: Jean Perier
Date: 2021-09-01T08:40:43+02:00
New Revision: c5729f2e638a792759a53c28fbe39a22ede86943
URL: https://github.com/llvm/llvm-project/commit/c5729f2e638a792759a53c28fbe39a22ede86943
DIFF: https://github.com/llvm/llvm-project/commit/c5729f2e638a792759a53c28fbe39a22ede86943.diff
LOG: [flang] Set default form if unspecified at end of OPEN statement
The standard specifies that the form must be set to a default at the
end of an open statement (C.7.4 point 2) where it was not specified.
Only in the case of a pre-connected unit can the form be deferred
until the first data transfer statement.
Set back the default form setting in OpenStatementState::EndIoStatement
that had been removed when deferring the pre-connected unit from setting
in 199a623ebf808a01e920ebd9904c99e633c33a1f.
Also return "UNDEFINED" instead of "UNKNOWN" to the FORM inquiry when the
form was not yet specified as defined in 12.10.2.12.
Related test: syntax 215a216.
Differential Revision: https://reviews.llvm.org/D108990
Added:
Modified:
flang/runtime/io-stmt.cpp
Removed:
################################################################################
diff --git a/flang/runtime/io-stmt.cpp b/flang/runtime/io-stmt.cpp
index fc1dcbf37e15d..cd4a6cc62cd58 100644
--- a/flang/runtime/io-stmt.cpp
+++ b/flang/runtime/io-stmt.cpp
@@ -243,6 +243,10 @@ int OpenStatementState::EndIoStatement() {
}
unit().isUnformatted = *isUnformatted_;
}
+ if (!unit().isUnformatted) {
+ // Set default format (C.7.4 point 2).
+ unit().isUnformatted = unit().access != Access::Sequential;
+ }
return ExternalIoStatementBase::EndIoStatement();
}
@@ -969,7 +973,7 @@ bool InquireUnitState::Inquire(
: "ASCII";
break;
case HashInquiryKeyword("FORM"):
- str = !unit().isUnformatted ? "UNKNOWN"
+ str = !unit().isUnformatted ? "UNDEFINED"
: *unit().isUnformatted ? "UNFORMATTED"
: "FORMATTED";
break;
More information about the flang-commits
mailing list