[flang-commits] [flang] [flang] Classify MOVE_ALLOC with noncoarray FROM as SIMPLE (PR #224923)

Šárka Holendová via flang-commits flang-commits at lists.llvm.org
Sun Sep 20 05:27:01 PDT 2026


https://github.com/mlir-maiden created https://github.com/llvm/llvm-project/pull/224923

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 

>From dd05cd8925f9141d084381a7ff484c5db2975eb0 Mon Sep 17 00:00:00 2001
From: Sarka Holendova <sarka.holendova at gmail.com>
Date: Sun, 20 Sep 2026 08:08:02 -0400
Subject: [PATCH] [flang] Classify MOVE_ALLOC with noncoarray FROM as SIMPLE

F2023 16.1(5) classifies MOVE_ALLOC as SIMPLE when its FROM argument is
not a coarray. Implement this conditional classification.
---
 flang/lib/Evaluate/intrinsics.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

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) {



More information about the flang-commits mailing list