[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