[flang-commits] [flang] [flang] Check definability for logical INQUIRE specifiers (PR #144797)
via flang-commits
flang-commits at lists.llvm.org
Wed Jun 18 14:40:29 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-semantics
Author: Peter Klausler (klausler)
<details>
<summary>Changes</summary>
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.
---
Full diff: https://github.com/llvm/llvm-project/pull/144797.diff
2 Files Affected:
- (modified) flang/lib/Semantics/check-io.cpp (+2)
- (added) flang/test/Semantics/bug144453.f90 (+10)
``````````diff
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
``````````
</details>
https://github.com/llvm/llvm-project/pull/144797
More information about the flang-commits
mailing list