forked from OSchip/llvm-project
[flang] Ensure that structure constructors fold parameter references
Structure contructors for instances of parameterized derived types must have their components' values folded in the context of the values of the type parameters. Differential Revision: https://reviews.llvm.org/D125116
This commit is contained in:
parent
879a47a55f
commit
a054c88205
|
@ -67,6 +67,7 @@ Expr<SomeDerived> FoldOperation(
|
|||
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)) {
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue