diff options
author | peter klausler <pklausler@nvidia.com> | 2020-12-15 10:54:36 -0800 |
---|---|---|
committer | peter klausler <pklausler@nvidia.com> | 2020-12-15 16:26:18 -0800 |
commit | d6a74ec826adac16f715c5700fc102c62d1a8bf0 (patch) | |
tree | 99af5820730605996b46a3768d24995d5fa2cab5 /flang/lib/Semantics/pointer-assignment.cpp | |
parent | 09edd9df6e1fa8c316de82aac3718cb9adf17f15 (diff) | |
download | llvm-d6a74ec826adac16f715c5700fc102c62d1a8bf0.zip llvm-d6a74ec826adac16f715c5700fc102c62d1a8bf0.tar.gz llvm-d6a74ec826adac16f715c5700fc102c62d1a8bf0.tar.bz2 |
[flang] Fix false error message for "ptr => func()" array conformance
Pointers must have deferred shapes, so CheckConformance must be
extended to allow for them.
Differential Revision: https://reviews.llvm.org/D93320
Diffstat (limited to 'flang/lib/Semantics/pointer-assignment.cpp')
-rw-r--r-- | flang/lib/Semantics/pointer-assignment.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/flang/lib/Semantics/pointer-assignment.cpp b/flang/lib/Semantics/pointer-assignment.cpp index dc5611c..8cf46f5 100644 --- a/flang/lib/Semantics/pointer-assignment.cpp +++ b/flang/lib/Semantics/pointer-assignment.cpp @@ -169,7 +169,9 @@ bool PointerAssignmentChecker::Check(const evaluate::FunctionRef<T> &f) { } else if (lhsType_) { const auto *frTypeAndShape{funcResult->GetTypeAndShape()}; CHECK(frTypeAndShape); - if (!lhsType_->IsCompatibleWith(context_.messages(), *frTypeAndShape)) { + if (!lhsType_->IsCompatibleWith(context_.messages(), *frTypeAndShape, + "pointer", "function result", false /*elemental*/, + true /*left: deferred shape*/, true /*right: deferred shape*/)) { msg = "%s is associated with the result of a reference to function '%s'" " whose pointer result has an incompatible type or shape"_err_en_US; } |