Skip to content

Commit efd3eb6

Browse files
committed
simplify region merging
1 parent 468036b commit efd3eb6

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

flang/lib/Optimizer/Transforms/SimplifyFIROperations.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -203,16 +203,13 @@ class DoConcurrentConversion
203203
// dialect ops.
204204
assert(region.hasOneBlock() &&
205205
"Expected localizer region to have a single block.");
206-
mlir::Block *beforeLocalizerRegion = rewriter.getInsertionBlock();
207-
mlir::Block *afterLocalizerRegion =
208-
rewriter.splitBlock(rewriter.getInsertionBlock(), insertionPoint);
209-
rewriter.cloneRegionBefore(region, afterLocalizerRegion);
210-
mlir::Block *localizerRegion = beforeLocalizerRegion->getNextNode();
211-
212-
rewriter.eraseOp(localizerRegion->getTerminator());
213-
rewriter.mergeBlocks(afterLocalizerRegion, localizerRegion);
214-
rewriter.mergeBlocks(localizerRegion, beforeLocalizerRegion,
215-
regionArgs);
206+
mlir::OpBuilder::InsertionGuard guard(rewriter);
207+
rewriter.setInsertionPoint(rewriter.getInsertionBlock(),
208+
insertionPoint);
209+
mlir::IRMapping mapper;
210+
mapper.map(region.getArguments(), regionArgs);
211+
for (mlir::Operation &op : region.front().without_terminator())
212+
(void)rewriter.clone(op, mapper);
216213
};
217214

218215
if (!localizer.getInitRegion().empty())

0 commit comments

Comments
 (0)