Skip to content

Commit 7fdd34a

Browse files
committed
Replace mapInfoOp
Also fix another use-after-free
1 parent 322b9f0 commit 7fdd34a

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

mlir/lib/Dialect/OpenMP/Transforms/OpenMPOffloadPrivatizationPrepare.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -252,15 +252,16 @@ class PrepareForOMPOffloadPrivatizationPass
252252
// variable, rewrite all the uses of the original variable with
253253
// the heap-allocated variable.
254254
rewriter.setInsertionPoint(targetOp);
255-
auto clonedOp = cast<omp::MapInfoOp>(cloneModifyAndErase(mapInfoOp));
256-
rewriter.setInsertionPoint(clonedOp);
255+
mapInfoOp = cast<omp::MapInfoOp>(cloneModifyAndErase(mapInfoOp));
256+
rewriter.setInsertionPoint(mapInfoOp);
257257

258258
// Fix any members that may use varPtr to now use heapMem
259-
for (auto member : clonedOp.getMembers()) {
259+
for (auto member : mapInfoOp.getMembers()) {
260260
auto memberMapInfoOp = cast<omp::MapInfoOp>(member.getDefiningOp());
261261
if (!usesVarPtr(memberMapInfoOp))
262262
continue;
263-
rewriter.setInsertionPoint(cloneModifyAndErase(memberMapInfoOp));
263+
memberMapInfoOp = cast<omp::MapInfoOp>(cloneModifyAndErase(memberMapInfoOp));
264+
rewriter.setInsertionPoint(memberMapInfoOp);
264265

265266
if (memberMapInfoOp.getVarPtrPtr()) {
266267
Operation *varPtrPtrdefOp =
@@ -276,7 +277,7 @@ class PrepareForOMPOffloadPrivatizationPass
276277
// targetOp.
277278
if (isPrivatizedByValue) {
278279
rewriter.setInsertionPoint(targetOp);
279-
auto newPrivVar = LLVM::LoadOp::create(rewriter, clonedOp.getLoc(),
280+
auto newPrivVar = LLVM::LoadOp::create(rewriter, mapInfoOp.getLoc(),
280281
varType, heapMem);
281282
newPrivVars.push_back(newPrivVar);
282283
}

0 commit comments

Comments
 (0)