diff options
author | Peter Klausler <35819229+klausler@users.noreply.github.com> | 2024-06-13 10:57:06 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-13 10:57:06 -0700 |
commit | 2414a90730d87c20d9ff8d7951ed24e3328124ed (patch) | |
tree | 6243686c1311aff092b5cefc0a695c665c242fb8 /flang/lib/Evaluate/intrinsics.cpp | |
parent | 010c55bf44144f6370a0c4995c30ec51b06e1efe (diff) | |
download | llvm-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.cpp | 4 |
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)) { |