diff --git a/mlir/lib/Conversion/ShapeToSCF/ShapeToSCF.cpp b/mlir/lib/Conversion/ShapeToSCF/ShapeToSCF.cpp --- a/mlir/lib/Conversion/ShapeToSCF/ShapeToSCF.cpp +++ b/mlir/lib/Conversion/ShapeToSCF/ShapeToSCF.cpp @@ -103,14 +103,15 @@ // Copy shape extents to stack-allocated memory. auto zeroVal = rewriter.create(loc, 0); auto oneVal = rewriter.create(loc, 1); - rewriter.create( - loc, zeroVal, rankVal, oneVal, ValueRange(), - [&](OpBuilder &b, Location loc, Value iVal, ValueRange args) { - auto dimVal = b.create(loc, tensorVal, iVal); - auto dimIntVal = b.create(loc, dimVal, i64Ty); - b.create(loc, dimIntVal, memVal, ValueRange({iVal})); - b.create(loc); - }); + auto loop = rewriter.create(loc, zeroVal, rankVal, oneVal); + { + OpBuilder::InsertionGuard guard(rewriter); + rewriter.setInsertionPointToStart(loop.getBody()); + auto iVal = loop.getInductionVar(); + auto dimVal = rewriter.create(loc, tensorVal, iVal); + auto dimIntVal = rewriter.create(loc, dimVal, i64Ty); + rewriter.create(loc, dimIntVal, memVal, ValueRange{iVal}); + } // Load extents to tensor value. auto shapeIntVal = rewriter.create(loc, memVal);