From 286f45189bbb06a4e6a3fc1c3f92bfce486f3ebe Mon Sep 17 00:00:00 2001 From: Peter Klausler Date: Tue, 23 Sep 2025 15:45:18 -0700 Subject: [PATCH] [flang] Catch attempts to use assumed-rank as elemental argument (#159852) An assumed-rank array may not be used as an argument to an elemental procedure. Fixes https://github.com/llvm/llvm-project/issues/159555. --- flang/lib/Semantics/check-call.cpp | 4 ++++ flang/test/Semantics/elemental03.f90 | 13 +++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 flang/test/Semantics/elemental03.f90 diff --git a/flang/lib/Semantics/check-call.cpp b/flang/lib/Semantics/check-call.cpp index 797fd067b818..4939d8d64a99 100644 --- a/flang/lib/Semantics/check-call.cpp +++ b/flang/lib/Semantics/check-call.cpp @@ -1538,6 +1538,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 000000000000..1a2e22065b41 --- /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