[flang-commits] [flang] [flang] Catch attempts to use assumed-rank as elemental argument (PR #159852)
via flang-commits
flang-commits at lists.llvm.org
Fri Sep 19 14:42:16 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-semantics
Author: Peter Klausler (klausler)
<details>
<summary>Changes</summary>
An assumed-rank array may not be used as an argument to an elemental procedure.
Fixes https://github.com/llvm/llvm-project/issues/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
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
``````````
</details>
https://github.com/llvm/llvm-project/pull/159852
More information about the flang-commits
mailing list