[flang-commits] [flang] d80d812 - [flang] Fix check for assumed-size arguments to SHAPE() & al.
Peter Klausler via flang-commits
flang-commits at lists.llvm.org
Wed May 11 10:33:23 PDT 2022
Author: Peter Klausler
Date: 2022-05-11T10:33:17-07:00
New Revision: d80d812df0c829b6dbbcb968e7c3cf3c6be6ff41
URL: https://github.com/llvm/llvm-project/commit/d80d812df0c829b6dbbcb968e7c3cf3c6be6ff41
DIFF: https://github.com/llvm/llvm-project/commit/d80d812df0c829b6dbbcb968e7c3cf3c6be6ff41.diff
LOG: [flang] Fix check for assumed-size arguments to SHAPE() & al.
The predicate that is used to detect an invalid assumed-size argument
to the intrinsic functions SHAPE, SIZE, & LBOUND gives false results
for arguments whose shapes are not calculatable at compilation time.
Replace with an explicit test for an assumed-size array dummy argument
symbol.
Differential Revision: https://reviews.llvm.org/D125342
Added:
Modified:
flang/lib/Evaluate/intrinsics.cpp
Removed:
################################################################################
diff --git a/flang/lib/Evaluate/intrinsics.cpp b/flang/lib/Evaluate/intrinsics.cpp
index c65825abb1aa..64aafe5e5083 100644
--- a/flang/lib/Evaluate/intrinsics.cpp
+++ b/flang/lib/Evaluate/intrinsics.cpp
@@ -1563,8 +1563,8 @@ std::optional<SpecificCall> IntrinsicInterface::Match(
// (A previous error message for UBOUND will take precedence
// over this one, as this error is caught by the second entry
// for UBOUND.)
- if (std::optional<Shape> shape{GetShape(context, *arg)}) {
- if (!shape->empty() && !shape->back().has_value()) {
+ if (const Symbol * argSym{GetLastSymbol(*arg)}) {
+ if (semantics::IsAssumedSizeArray(*argSym)) {
if (strcmp(name, "shape") == 0) {
messages.Say(arg->sourceLocation(),
"The '%s=' argument to the intrinsic function '%s' may not be assumed-size"_err_en_US,
More information about the flang-commits
mailing list