[flang-commits] [flang] 8b5b38e - [flang] Revert new unintended runtime behavior
Peter Klausler via flang-commits
flang-commits at lists.llvm.org
Thu Oct 28 14:44:39 PDT 2021
Author: Peter Klausler
Date: 2021-10-28T14:11:06-07:00
New Revision: 8b5b38eb2487d86f9b9854d69a58657192ec2ca4
URL: https://github.com/llvm/llvm-project/commit/8b5b38eb2487d86f9b9854d69a58657192ec2ca4
DIFF: https://github.com/llvm/llvm-project/commit/8b5b38eb2487d86f9b9854d69a58657192ec2ca4.diff
LOG: [flang] Revert new unintended runtime behavior
A recent change caused some variable-length sequential formatted
output statements with record positioning at the end of a FORMAT
(e.g., FORMAT('hi',10X) to append blanks at the end of the completed
record when emitting it.
Differential Revision: https://reviews.llvm.org/D112742
Added:
Modified:
flang/runtime/unit.cpp
Removed:
################################################################################
diff --git a/flang/runtime/unit.cpp b/flang/runtime/unit.cpp
index 6c146e66e32c..575af15513d7 100644
--- a/flang/runtime/unit.cpp
+++ b/flang/runtime/unit.cpp
@@ -455,6 +455,7 @@ bool ExternalFileUnit::AdvanceRecord(IoErrorHandler &handler) {
furthestPositionInRecord = *recordLength;
}
if (!(isFixedRecordLength && access == Access::Direct)) {
+ positionInRecord = furthestPositionInRecord;
if (isUnformatted.value_or(false)) {
// Append the length of a sequential unformatted variable-length record
// as its footer, then overwrite the reserved first four bytes of the
@@ -464,7 +465,6 @@ bool ExternalFileUnit::AdvanceRecord(IoErrorHandler &handler) {
// headers &/or footers
std::uint32_t length;
length = furthestPositionInRecord - sizeof length;
- positionInRecord = furthestPositionInRecord;
ok = ok &&
Emit(reinterpret_cast<const char *>(&length), sizeof length,
sizeof length, handler);
More information about the flang-commits
mailing list