[flang-commits] [flang] [flang] Classify MOVE_ALLOC with noncoarray FROM as SIMPLE (PR #224923)
via flang-commits
flang-commits at lists.llvm.org
Sun Sep 20 05:27:42 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-semantics
Author: Šárka Holendová (mlir-maiden)
<details>
<summary>Changes</summary>
F2023 16.1(5) classifies `MOVE_ALLOC` as `SIMPLE` when its `FROM` argument is not a coarray.
Implement this conditional classification.
Part of #<!-- -->221457.
@<!-- -->eugeneepshteyn
@<!-- -->cenewcombe
---
Full diff: https://github.com/llvm/llvm-project/pull/224923.diff
1 Files Affected:
- (modified) flang/lib/Evaluate/intrinsics.cpp (+4-2)
``````````diff
diff --git a/flang/lib/Evaluate/intrinsics.cpp b/flang/lib/Evaluate/intrinsics.cpp
index 88874f7ef08e8..39565e2fb2d60 100644
--- a/flang/lib/Evaluate/intrinsics.cpp
+++ b/flang/lib/Evaluate/intrinsics.cpp
@@ -2876,8 +2876,10 @@ std::optional<SpecificCall> IntrinsicInterface::Match(
}
if (call.isSubroutineCall) {
if (intrinsicClass == IntrinsicClass::pureSubroutine /* MOVE_ALLOC */) {
- // TODO: set Attr::Simple for MOVE_ALLOC when FROM is not a coarray
- // (F2023)
+ // F2023 16.1(5): MOVE_ALLOC with noncoarray FROM is SIMPLE
+ if (!IsCoarray(*rearranged[0])) {
+ attrs.set(characteristics::Procedure::Attr::Simple);
+ }
attrs.set(characteristics::Procedure::Attr::Pure);
} else if (intrinsicClass == IntrinsicClass::simpleSubroutine ||
intrinsicClass == IntrinsicClass::simpleElementalSubroutine) {
``````````
</details>
https://github.com/llvm/llvm-project/pull/224923
More information about the flang-commits
mailing list