aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Semantics/pointer-assignment.cpp
diff options
context:
space:
mode:
authorPeter Klausler <pklausler@nvidia.com>2025-03-10 13:16:50 -0700
committerGitHub <noreply@github.com>2025-03-10 13:16:50 -0700
commit706e7d83cfd92c9da5125c43a28832336e9bd45b (patch)
tree69d616d77db427bfb399718f314269fda5345479 /flang/lib/Semantics/pointer-assignment.cpp
parent53c3a2c69aeaaf65ceedc1117648461607f0c165 (diff)
downloadllvm-706e7d83cfd92c9da5125c43a28832336e9bd45b.zip
llvm-706e7d83cfd92c9da5125c43a28832336e9bd45b.tar.gz
llvm-706e7d83cfd92c9da5125c43a28832336e9bd45b.tar.bz2
[flang] Enforce C1027 (F'2023) (#129617)
The LHS of a pointer assignment statement may not be coindexed.
Diffstat (limited to 'flang/lib/Semantics/pointer-assignment.cpp')
-rw-r--r--flang/lib/Semantics/pointer-assignment.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/flang/lib/Semantics/pointer-assignment.cpp b/flang/lib/Semantics/pointer-assignment.cpp
index 654c018..23a64d0 100644
--- a/flang/lib/Semantics/pointer-assignment.cpp
+++ b/flang/lib/Semantics/pointer-assignment.cpp
@@ -154,6 +154,9 @@ bool PointerAssignmentChecker::CheckLeftHandSide(const SomeExpr &lhs) {
} else if (evaluate::IsAssumedRank(lhs)) {
Say("The left-hand side of a pointer assignment must not be an assumed-rank dummy argument"_err_en_US);
return false;
+ } else if (evaluate::ExtractCoarrayRef(lhs)) { // F'2023 C1027
+ Say("The left-hand side of a pointer assignment must not be coindexed"_err_en_US);
+ return false;
} else {
return true;
}
@@ -177,7 +180,7 @@ bool PointerAssignmentChecker::Check(const SomeExpr &rhs) {
Say("An array section with a vector subscript may not be a pointer target"_err_en_US);
return false;
}
- if (ExtractCoarrayRef(rhs)) { // C1026
+ if (ExtractCoarrayRef(rhs)) { // F'2023 C1029
Say("A coindexed object may not be a pointer target"_err_en_US);
return false;
}