[flang-commits] [flang] [flang] dummy arguments used as function calls (PR #196426)
via flang-commits
flang-commits at lists.llvm.org
Sat May 9 01:55:52 PDT 2026
https://github.com/SunilKuravinakop updated https://github.com/llvm/llvm-project/pull/196426
>From 949705e47a2c7cbfc44265b1aede917ee450620b Mon Sep 17 00:00:00 2001
From: Sunil Kuravinakop <kuravina at pe31.hpc.amslabs.hpecorp.net>
Date: Thu, 7 May 2026 14:55:01 -0500
Subject: [PATCH 1/2] Adding an error when a dummy argument is used as a
statement function. 1) Dummy argument 'foo' may not be used as a statement
function 2) 'foo' is not a callable procedure
---
flang/lib/Semantics/resolve-names.cpp | 5 +++++
flang/test/Semantics/stmt-func01.f90 | 6 ++++++
2 files changed, 11 insertions(+)
diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp
index f5478c354b40a..df09f6fd58ab5 100644
--- a/flang/lib/Semantics/resolve-names.cpp
+++ b/flang/lib/Semantics/resolve-names.cpp
@@ -4836,6 +4836,11 @@ bool SubprogramVisitor::HandleStmtFunction(const parser::StmtFunctionStmt &x) {
name.symbol = nullptr;
} else if (auto *entity{ultimate.detailsIf<EntityDetails>()};
entity && !ultimate.has<ProcEntityDetails>()) {
+ if (entity->isDummy()) {
+ Say(name,
+ "Dummy argument '%s' may not be used as a statement function"_err_en_US);
+ return false;
+ }
resultType = entity->type();
ultimate.details() = UnknownDetails{}; // will be replaced below
} else {
diff --git a/flang/test/Semantics/stmt-func01.f90 b/flang/test/Semantics/stmt-func01.f90
index d8ef9af25b389..ade4ceceaaa7f 100644
--- a/flang/test/Semantics/stmt-func01.f90
+++ b/flang/test/Semantics/stmt-func01.f90
@@ -98,3 +98,9 @@ subroutine s5
!ERROR: 'k' is already declared in this scoping unit
k() = 0.0
end
+
+subroutine s6(b)
+ !ERROR: Dummy argument 'b' may not be used as a statement function
+ !ERROR: 'b' is not a callable procedure
+ b(c) = 0
+end
>From a4eae4025b8737dc3fc716dce31eadbdfeff0c4b Mon Sep 17 00:00:00 2001
From: Sunil Kuravinakop <kuravina at pe31.hpc.amslabs.hpecorp.net>
Date: Sat, 9 May 2026 03:54:32 -0500
Subject: [PATCH 2/2] Adding a few more tests.
---
flang/test/Semantics/stmt-func01.f90 | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/flang/test/Semantics/stmt-func01.f90 b/flang/test/Semantics/stmt-func01.f90
index ade4ceceaaa7f..d56aedc324e81 100644
--- a/flang/test/Semantics/stmt-func01.f90
+++ b/flang/test/Semantics/stmt-func01.f90
@@ -104,3 +104,16 @@ subroutine s6(b)
!ERROR: 'b' is not a callable procedure
b(c) = 0
end
+
+subroutine s7
+ entry e7(b)
+ !ERROR: Dummy argument 'b' may not be used as a statement function
+ !ERROR: 'b' is not a callable procedure
+ b(c) = 0
+end
+
+subroutine s8(p)
+ external p
+ !ERROR: 'p' has not been declared as an array or pointer-valued function
+ p(c) = 0
+end
More information about the flang-commits
mailing list