[flang-commits] [PATCH] D144512: [flang] Preserve useResultSymbolShape_ option when folding array constructor shape

Jean Perier via Phabricator via flang-commits flang-commits at lists.llvm.org
Fri Feb 24 00:07:05 PST 2023


This revision was automatically updated to reflect the committed changes.
Closed by commit rG91bd4c6e81ac: [flang] Preserve useResultSymbolShape_ option when folding array constructor… (authored by jeanPerier).
Herald added a subscriber: sunshaoce.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144512/new/

https://reviews.llvm.org/D144512

Files:
  flang/include/flang/Evaluate/shape.h
  flang/test/Evaluate/rewrite01.f90


Index: flang/test/Evaluate/rewrite01.f90
===================================================================
--- flang/test/Evaluate/rewrite01.f90
+++ flang/test/Evaluate/rewrite01.f90
@@ -195,4 +195,15 @@
   end associate
 end subroutine
 
+!CHECK-LABEL: array_constructor
+subroutine array_constructor()
+  interface
+    function return_allocatable()
+     real, allocatable :: return_allocatable(:)
+    end function
+  end interface
+  !CHECK: PRINT *, size([REAL(4)::return_allocatable(),return_allocatable()])
+  print *, size([return_allocatable(), return_allocatable()])
+end subroutine
+
 end module
Index: flang/include/flang/Evaluate/shape.h
===================================================================
--- flang/include/flang/Evaluate/shape.h
+++ flang/include/flang/Evaluate/shape.h
@@ -168,8 +168,9 @@
     return common::visit(
         common::visitors{
             [&](const Expr<T> &x) -> MaybeExtentExpr {
-              if (auto xShape{
-                      context_ ? GetShape(*context_, x) : GetShape(x)}) {
+              if (auto xShape{!useResultSymbolShape_ ? (*this)(x)
+                          : context_                 ? GetShape(*context_, x)
+                                                     : GetShape(x)}) {
                 // Array values in array constructors get linearized.
                 return GetSize(std::move(*xShape));
               } else {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D144512.500088.patch
Type: text/x-patch
Size: 1407 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20230224/b3b7c7ee/attachment-0001.bin>


More information about the flang-commits mailing list