[flang-commits] [PATCH] D125116: [flang] Ensure that structure constructors fold parameter references

Peter Klausler via Phabricator via flang-commits flang-commits at lists.llvm.org
Mon May 9 16:10:07 PDT 2022


This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGa054c882053e: [flang] Ensure that structure constructors fold parameter references (authored by klausler).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D125116

Files:
  flang/lib/Evaluate/fold.cpp
  flang/test/Semantics/structconst05.f90


Index: flang/test/Semantics/structconst05.f90
===================================================================
--- /dev/null
+++ flang/test/Semantics/structconst05.f90
@@ -0,0 +1,9 @@
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! Ensure that PDT instance structure constructors can be folded to constants
+module m1
+  type :: pdt(k)
+    integer, len :: k
+    character(len=k) :: x, y = "def"
+  end type
+  type(pdt(4)) :: v = pdt(4)("abc")
+end module
Index: flang/lib/Evaluate/fold.cpp
===================================================================
--- flang/lib/Evaluate/fold.cpp
+++ flang/lib/Evaluate/fold.cpp
@@ -67,6 +67,7 @@
     FoldingContext &context, StructureConstructor &&structure) {
   StructureConstructor ctor{structure.derivedTypeSpec()};
   bool isConstant{true};
+  auto restorer{context.WithPDTInstance(structure.derivedTypeSpec())};
   for (auto &&[symbol, value] : std::move(structure)) {
     auto expr{Fold(context, std::move(value.value()))};
     if (IsPointer(symbol)) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D125116.428232.patch
Type: text/x-patch
Size: 1016 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20220509/f3459143/attachment.bin>


More information about the flang-commits mailing list