[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