[flang-commits] [flang] 348002e - [flang] Check definability for logical INQUIRE specifiers (#144797)

via flang-commits flang-commits at lists.llvm.org
Mon Jun 30 10:21:09 PDT 2025


Author: Peter Klausler
Date: 2025-06-30T10:21:06-07:00
New Revision: 348002e1117b1ce523468b536ba47f126d0f2964

URL: https://github.com/llvm/llvm-project/commit/348002e1117b1ce523468b536ba47f126d0f2964
DIFF: https://github.com/llvm/llvm-project/commit/348002e1117b1ce523468b536ba47f126d0f2964.diff

LOG: [flang] Check definability for logical INQUIRE specifiers (#144797)

check-io.cpp was missing checks for the definability of logical-valued
specifiers in INQUIRE statements (e.g. EXIST=), and therefore also not
noting the definitions of those variables. This could lead to bogus
warnings about undefined function result variables, and also to missed
errors about immutable objects appearing in those specifiers.

Fixes https://github.com/llvm/llvm-project/issues/144453.

Added: 
    flang/test/Semantics/bug144453.f90

Modified: 
    flang/lib/Semantics/check-io.cpp

Removed: 
    


################################################################################
diff  --git a/flang/lib/Semantics/check-io.cpp b/flang/lib/Semantics/check-io.cpp
index 10b32d9af0f88..a1ff4b922268b 100644
--- a/flang/lib/Semantics/check-io.cpp
+++ b/flang/lib/Semantics/check-io.cpp
@@ -478,6 +478,8 @@ void IoChecker::Enter(const parser::InquireSpec::LogVar &spec) {
     specKind = IoSpecKind::Pending;
     break;
   }
+  CheckForDefinableVariable(std::get<parser::ScalarLogicalVariable>(spec.t),
+      parser::ToUpperCaseLetters(common::EnumToString(specKind)));
   SetSpecifier(specKind);
 }
 

diff  --git a/flang/test/Semantics/bug144453.f90 b/flang/test/Semantics/bug144453.f90
new file mode 100644
index 0000000000000..85c0892bffb5c
--- /dev/null
+++ b/flang/test/Semantics/bug144453.f90
@@ -0,0 +1,10 @@
+!RUN: %python %S/test_errors.py %s %flang_fc1
+function func(immutable)
+  logical func
+  logical, intent(in) :: immutable
+  !No warning about an undefined function result should appear
+  INQUIRE(file="/usr/local/games/adventure", EXIST=func)
+  !ERROR: EXIST variable 'immutable' is not definable
+  !BECAUSE: 'immutable' is an INTENT(IN) dummy argument
+  INQUIRE(file="/usr/local/games/adventure", EXIST=immutable)
+end


        


More information about the flang-commits mailing list