[flang-commits] [flang] 2326a02 - [flang] Support read-only access to an anonymous unit (#105859)

via flang-commits flang-commits at lists.llvm.org
Mon Aug 26 10:52:23 PDT 2024


Author: Peter Klausler
Date: 2024-08-26T10:52:19-07:00
New Revision: 2326a02357c74a1a913a3d572bf789d4d48af7f0

URL: https://github.com/llvm/llvm-project/commit/2326a02357c74a1a913a3d572bf789d4d48af7f0
DIFF: https://github.com/llvm/llvm-project/commit/2326a02357c74a1a913a3d572bf789d4d48af7f0.diff

LOG: [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.

Added: 
    

Modified: 
    flang/runtime/external-unit.cpp

Removed: 
    


################################################################################
diff  --git a/flang/runtime/external-unit.cpp b/flang/runtime/external-unit.cpp
index 8009151a8a370c..d17a92622f8448 100644
--- a/flang/runtime/external-unit.cpp
+++ b/flang/runtime/external-unit.cpp
@@ -65,9 +65,13 @@ ExternalFileUnit *ExternalFileUnit::LookUpOrCreateAnonymous(int unit,
   bool exists{false};
   ExternalFileUnit *result{GetUnitMap().LookUpOrCreate(unit, handler, exists)};
   if (result && !exists) {
+    common::optional<Action> action;
+    if (dir == Direction::Output) {
+      action = Action::ReadWrite;
+    }
     if (!result->OpenAnonymousUnit(
             dir == Direction::Input ? OpenStatus::Unknown : OpenStatus::Replace,
-            Action::ReadWrite, Position::Rewind, Convert::Unknown, handler)) {
+            action, Position::Rewind, Convert::Unknown, handler)) {
       // fort.N isn't a writable file
       if (ExternalFileUnit * closed{LookUpForClose(result->unitNumber())}) {
         closed->DestroyClosed();


        


More information about the flang-commits mailing list