aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Semantics/pointer-assignment.cpp
diff options
context:
space:
mode:
authorPeter Klausler <pklausler@nvidia.com>2023-03-28 07:50:58 -0700
committerPeter Klausler <pklausler@nvidia.com>2023-03-28 11:56:52 -0700
commit50f1476a9748c15b9c35391feccff08b75122620 (patch)
tree36bbade934740d4679f92afb5703f475b5ca4e53 /flang/lib/Semantics/pointer-assignment.cpp
parentc57a58cd0cfed0cb67e71c8ba30f53f397127a98 (diff)
downloadllvm-50f1476a9748c15b9c35391feccff08b75122620.zip
llvm-50f1476a9748c15b9c35391feccff08b75122620.tar.gz
llvm-50f1476a9748c15b9c35391feccff08b75122620.tar.bz2
[flang] Fix checking of pointer passed to assumed-rank
Don't check ranks when a pointer actual argument is associated with a pointer assumed-rank dummy argument. Differential Revision: https://reviews.llvm.org/D147052
Diffstat (limited to 'flang/lib/Semantics/pointer-assignment.cpp')
-rw-r--r--flang/lib/Semantics/pointer-assignment.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/flang/lib/Semantics/pointer-assignment.cpp b/flang/lib/Semantics/pointer-assignment.cpp
index d636cc0..de6e783 100644
--- a/flang/lib/Semantics/pointer-assignment.cpp
+++ b/flang/lib/Semantics/pointer-assignment.cpp
@@ -315,7 +315,8 @@ bool PointerAssignmentChecker::Check(const evaluate::Designator<T> &d) {
"Target type %s is not compatible with pointer type %s"_err_en_US,
rhsType->type().AsFortran(), lhsType_->type().AsFortran()};
- } else if (!isBoundsRemapping_) {
+ } else if (!isBoundsRemapping_ &&
+ !lhsType_->attrs().test(TypeAndShape::Attr::AssumedRank)) {
int lhsRank{evaluate::GetRank(lhsType_->shape())};
int rhsRank{evaluate::GetRank(rhsType->shape())};
if (lhsRank != rhsRank) {