Skip to content

Conversation

klausler
Copy link
Contributor

An assumed-rank array may not be used as an argument to an elemental procedure.

Fixes #159555.

An assumed-rank array may not be used as an argument to an
elemental procedure.

Fixes llvm#159555.
@llvmbot llvmbot added flang Flang issues not falling into any other category flang:semantics labels Sep 19, 2025
@llvmbot
Copy link
Member

llvmbot commented Sep 19, 2025

@llvm/pr-subscribers-flang-semantics

Author: Peter Klausler (klausler)

Changes

An assumed-rank array may not be used as an argument to an elemental procedure.

Fixes #159555.


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

2 Files Affected:

  • (modified) flang/lib/Semantics/check-call.cpp (+4)
  • (added) flang/test/Semantics/elemental03.f90 (+13)
diff --git a/flang/lib/Semantics/check-call.cpp b/flang/lib/Semantics/check-call.cpp
index f0078fda3600c..f290682550a61 100644
--- a/flang/lib/Semantics/check-call.cpp
+++ b/flang/lib/Semantics/check-call.cpp
@@ -1483,6 +1483,10 @@ static bool CheckElementalConformance(parser::ContextualMessages &messages,
             evaluate::SayWithDeclaration(messages, *wholeSymbol,
                 "Whole assumed-size array '%s' may not be used as an argument to an elemental procedure"_err_en_US,
                 wholeSymbol->name());
+          } else if (IsAssumedRank(*wholeSymbol)) {
+            evaluate::SayWithDeclaration(messages, *wholeSymbol,
+                "Assumed-rank array '%s' may not be used as an argument to an elemental procedure"_err_en_US,
+                wholeSymbol->name());
           }
         }
         if (auto argShape{evaluate::GetShape(context, *expr)}) {
diff --git a/flang/test/Semantics/elemental03.f90 b/flang/test/Semantics/elemental03.f90
new file mode 100644
index 0000000000000..1a2e22065b418
--- /dev/null
+++ b/flang/test/Semantics/elemental03.f90
@@ -0,0 +1,13 @@
+!RUN: %python %S/test_errors.py %s %flang_fc1
+module m
+ contains
+  elemental real function f(x)
+    real, intent(in) :: x
+    f = x
+  end
+  subroutine s(a)
+    real a(..)
+    !ERROR: Assumed-rank array 'a' may not be used as an argument to an elemental procedure
+    print *, f(a)
+  end
+end

@klausler klausler merged commit 286f451 into llvm:main Sep 23, 2025
12 checks passed
@klausler klausler deleted the bug159555 branch September 23, 2025 22:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

flang:semantics flang Flang issues not falling into any other category

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Flang] crashes when using ieee function with assumed-rank arrays

4 participants