diff --git a/flang/runtime/assign.cpp b/flang/runtime/assign.cpp --- a/flang/runtime/assign.cpp +++ b/flang/runtime/assign.cpp @@ -318,10 +318,10 @@ // for all components, including parent components (10.2.1.2-3). // The target is first finalized if still necessary (7.5.6.3(1)) if (needFinalization) { - Finalize(to, *toDerived); + Finalize(to, *toAddendum->derivedType()); } // Copy the data components (incl. the parent) first. - const Descriptor &componentDesc{toDerived->component()}; + const Descriptor &componentDesc{toAddendum->derivedType()->component()}; std::size_t numComponents{componentDesc.Elements()}; for (std::size_t k{0}; k < numComponents; ++k) { const auto &comp{ @@ -394,7 +394,7 @@ } } // Copy procedure pointer components - const Descriptor &procPtrDesc{toDerived->procPtr()}; + const Descriptor &procPtrDesc{toAddendum->derivedType()->procPtr()}; std::size_t numProcPtrs{procPtrDesc.Elements()}; for (std::size_t k{0}; k < numProcPtrs; ++k) { const auto &procPtr{