[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
Wed Feb 22 02:09:50 PST 2023
jeanPerier updated this revision to Diff 499427.
jeanPerier added a comment.
Rebase to include unrelated flang test fix.
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.499427.patch
Type: text/x-patch
Size: 1407 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20230222/3e185ee8/attachment-0001.bin>
More information about the flang-commits
mailing list