@@ -1124,7 +1124,6 @@ scf::ForOp mlir::fuseIndependentSiblingForLoops(scf::ForOp target,
1124
1124
},
1125
1125
[&](RewriterBase &b, LoopLikeOpInterface source,
1126
1126
LoopLikeOpInterface &target, IRMapping mapping) {
1127
- auto sourceFor = cast<scf::ForOp>(source);
1128
1127
auto targetFor = cast<scf::ForOp>(target);
1129
1128
auto newTerm = b.clone (*targetFor.getBody ()->getTerminator (), mapping);
1130
1129
b.replaceOp (targetFor.getBody ()->getTerminator (), newTerm);
@@ -1151,8 +1150,9 @@ scf::ParallelOp mlir::fuseIndependentSiblingParallelLoops(
1151
1150
1152
1151
rewriter.setInsertionPoint (source);
1153
1152
auto fusedLoop = rewriter.create <scf::ParallelOp>(
1154
- source.getLoc (), source.getLowerBound (), source.getUpperBound (),
1155
- source.getStep (), newInitVars);
1153
+ rewriter.getFusedLoc (target.getLoc (), source.getLoc ()),
1154
+ source.getLowerBound (), source.getUpperBound (), source.getStep (),
1155
+ newInitVars);
1156
1156
Block *newBlock = fusedLoop.getBody ();
1157
1157
rewriter.inlineBlockBefore (block2, newBlock, newBlock->begin (),
1158
1158
newBlock->getArguments ());
@@ -1168,8 +1168,8 @@ scf::ParallelOp mlir::fuseIndependentSiblingParallelLoops(
1168
1168
SmallVector<Value> newReduceArgs (reduceArgs1.begin (), reduceArgs1.end ());
1169
1169
newReduceArgs.append (reduceArgs2.begin (), reduceArgs2.end ());
1170
1170
1171
- auto newReduceOp =
1172
- rewriter.create <scf::ReduceOp>( term2.getLoc (), newReduceArgs);
1171
+ auto newReduceOp = rewriter. create <scf::ReduceOp>(
1172
+ rewriter.getFusedLoc (term1. getLoc (), term2.getLoc () ), newReduceArgs);
1173
1173
1174
1174
for (auto &&[i, reg] : llvm::enumerate (llvm::concat<Region>(
1175
1175
term1.getReductions (), term2.getReductions ()))) {
0 commit comments