================ @@ -216,31 +215,50 @@ bool ClauseProcessor::processMotionClauses(lower::StatementContext &stmtCtx, if (origSymbol && fir::isTypeWithDescriptor(origSymbol.getType())) symAddr = origSymbol; + if (object.sym()->owner().IsDerivedType()) { + omp::ObjectList objectList = gatherObjects(object, semaCtx); + parentObj = objectList[0]; + parentMemberIndices.insert({parentObj.value(), {}}); + if (Fortran::semantics::IsAllocatableOrObjectPointer( + object.sym()) || + memberHasAllocatableParent(object, semaCtx)) { + llvm::SmallVector<int> indices = + generateMemberPlacementIndices(object, semaCtx); + symAddr = createParentSymAndGenIntermediateMaps( + clauseLocation, converter, objectList, indices, + parentMemberIndices[parentObj.value()], asFortran.str(), + mapTypeBits); + } + } + ---------------- skatrak wrote:
I think PR #101703 is already doing some of this refactoring, just so you're aware @agozillon. https://github.com/llvm/llvm-project/pull/96266 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits