[flang-commits] [flang] [flang] Catch misuse of assumed-rank dummy argument (PR #173786)

via flang-commits flang-commits at lists.llvm.org
Sun Dec 28 08:13:37 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-flang-semantics

Author: Peter Klausler (klausler)

<details>
<summary>Changes</summary>

Assumed-rank dummy arguments can't be parenthesized.

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

---
Full diff: https://github.com/llvm/llvm-project/pull/173786.diff


2 Files Affected:

- (modified) flang/lib/Semantics/expression.cpp (+2) 
- (added) flang/test/Semantics/bug173593.f90 (+12) 


``````````diff
diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp
index 6f5d0bf9eb242..8bf07f4aef63e 100644
--- a/flang/lib/Semantics/expression.cpp
+++ b/flang/lib/Semantics/expression.cpp
@@ -3760,6 +3760,8 @@ MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Parentheses &x) {
   if (MaybeExpr operand{Analyze(x.v.value())}) {
     if (IsNullPointerOrAllocatable(&*operand)) {
       Say("NULL() may not be parenthesized"_err_en_US);
+    } else if (semantics::IsAssumedRank(*operand)) {
+      Say("An assumed-rank dummy argument may not be parenthesized"_err_en_US);
     } else if (const semantics::Symbol *symbol{GetLastSymbol(*operand)}) {
       if (const semantics::Symbol *result{FindFunctionResult(*symbol)}) {
         if (semantics::IsProcedurePointer(*result)) {
diff --git a/flang/test/Semantics/bug173593.f90 b/flang/test/Semantics/bug173593.f90
new file mode 100644
index 0000000000000..99cd62c97e02e
--- /dev/null
+++ b/flang/test/Semantics/bug173593.f90
@@ -0,0 +1,12 @@
+!RUN: %python %S/test_errors.py %s %flang_fc1
+module m
+ contains
+  subroutine s1(x)
+    integer :: x(..)
+    !ERROR: An assumed-rank dummy argument may not be parenthesized
+    call s2((x))
+  end
+  subroutine s2(y)
+    integer :: y(..)
+  end
+end

``````````

</details>


https://github.com/llvm/llvm-project/pull/173786


More information about the flang-commits mailing list