aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Evaluate/intrinsics.cpp
diff options
context:
space:
mode:
authorPeter Klausler <35819229+klausler@users.noreply.github.com>2024-06-13 10:57:06 -0700
committerGitHub <noreply@github.com>2024-06-13 10:57:06 -0700
commit2414a90730d87c20d9ff8d7951ed24e3328124ed (patch)
tree6243686c1311aff092b5cefc0a695c665c242fb8 /flang/lib/Evaluate/intrinsics.cpp
parent010c55bf44144f6370a0c4995c30ec51b06e1efe (diff)
downloadllvm-2414a90730d87c20d9ff8d7951ed24e3328124ed.zip
llvm-2414a90730d87c20d9ff8d7951ed24e3328124ed.tar.gz
llvm-2414a90730d87c20d9ff8d7951ed24e3328124ed.tar.bz2
[flang] Catch NULL(MOLD=assumed-rank) (#95270)
An assumed-rank dummy argument is not an acceptable MOLD argument to NULL(), whose result must have a known rank at compilation time.
Diffstat (limited to 'flang/lib/Evaluate/intrinsics.cpp')
-rw-r--r--flang/lib/Evaluate/intrinsics.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/flang/lib/Evaluate/intrinsics.cpp b/flang/lib/Evaluate/intrinsics.cpp
index 58c1b69..ace3161 100644
--- a/flang/lib/Evaluate/intrinsics.cpp
+++ b/flang/lib/Evaluate/intrinsics.cpp
@@ -2691,6 +2691,10 @@ SpecificCall IntrinsicProcTable::Implementation::HandleNull(
mold = nullptr;
}
if (mold) {
+ if (IsAssumedRank(*arguments[0])) {
+ context.messages().Say(arguments[0]->sourceLocation(),
+ "MOLD= argument to NULL() must not be assumed-rank"_err_en_US);
+ }
bool isProcPtrTarget{
IsProcedurePointerTarget(*mold) && !IsNullObjectPointer(*mold)};
if (isProcPtrTarget || IsAllocatableOrPointerObject(*mold)) {