diff --git a/mlir/lib/Dialect/OpenMP/Transforms/OpenMPOffloadPrivatizationPrepare.cpp b/mlir/lib/Dialect/OpenMP/Transforms/OpenMPOffloadPrivatizationPrepare.cpp index 735b905bffb85..a9125ec8f74c3 100644 --- a/mlir/lib/Dialect/OpenMP/Transforms/OpenMPOffloadPrivatizationPrepare.cpp +++ b/mlir/lib/Dialect/OpenMP/Transforms/OpenMPOffloadPrivatizationPrepare.cpp @@ -252,14 +252,17 @@ class PrepareForOMPOffloadPrivatizationPass // variable, rewrite all the uses of the original variable with // the heap-allocated variable. rewriter.setInsertionPoint(targetOp); - rewriter.setInsertionPoint(cloneModifyAndErase(mapInfoOp)); + mapInfoOp = cast(cloneModifyAndErase(mapInfoOp)); + rewriter.setInsertionPoint(mapInfoOp); // Fix any members that may use varPtr to now use heapMem for (auto member : mapInfoOp.getMembers()) { auto memberMapInfoOp = cast(member.getDefiningOp()); if (!usesVarPtr(memberMapInfoOp)) continue; - rewriter.setInsertionPoint(cloneModifyAndErase(memberMapInfoOp)); + memberMapInfoOp = + cast(cloneModifyAndErase(memberMapInfoOp)); + rewriter.setInsertionPoint(memberMapInfoOp); if (memberMapInfoOp.getVarPtrPtr()) { Operation *varPtrPtrdefOp =