[flang] Check shape conformance on initializers
Specifically, ensure that initializers conform with their objects
according to 8.2 para 4.
Differential Revision: https://reviews.llvm.org/D86886
diff --git a/flang/lib/Semantics/pointer-assignment.cpp b/flang/lib/Semantics/pointer-assignment.cpp
index d97eedf3..58719de 100644
--- a/flang/lib/Semantics/pointer-assignment.cpp
+++ b/flang/lib/Semantics/pointer-assignment.cpp
@@ -225,8 +225,8 @@
rhsType->type().AsFortran(), lhsType_->type().AsFortran()};
} else if (!isBoundsRemapping_) {
- std::size_t lhsRank{lhsType_->shape().size()};
- std::size_t rhsRank{rhsType->shape().size()};
+ int lhsRank{evaluate::GetRank(lhsType_->shape())};
+ int rhsRank{evaluate::GetRank(rhsType->shape())};
if (lhsRank != rhsRank) {
msg = MessageFormattedText{
"Pointer has rank %d but target has rank %d"_err_en_US, lhsRank,