diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp index 58af9995548e9..11ebbabe97737 100644 --- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp +++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp @@ -480,8 +480,8 @@ class RegionBuilderHelper { llvm_unreachable("unsupported type conversion function"); } - void yieldOutputs(ValueRange values) { - OpBuilder builder = getBuilder(); + void yieldOutputs(OpBuilder builder, ValueRange values) { + builder.setInsertionPointToEnd(&block); Location loc = builder.getUnknownLoc(); builder.create(loc, values); } diff --git a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp index 375e10f9068e4..e14efd8def092 100644 --- a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp +++ b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp @@ -260,6 +260,7 @@ struct SparseTensorCodegenPass // The following operations and dialects may be introduced by the // codegen rules, and are therefore marked as legal. target.addLegalOp(); + target.addLegalOp(); target.addLegalDialect< arith::ArithDialect, bufferization::BufferizationDialect, complex::ComplexDialect, memref::MemRefDialect, scf::SCFDialect>(); diff --git a/mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-yaml-gen.cpp b/mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-yaml-gen.cpp index fb3c9d48f9a98..cd8398b973a56 100644 --- a/mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-yaml-gen.cpp +++ b/mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-yaml-gen.cpp @@ -1012,7 +1012,7 @@ void {0}::regionBuilder(ImplicitLocOpBuilder &b, SmallVector yields; {2} {3} - helper.yieldOutputs(yields); + helper.yieldOutputs(b, yields); } )FMT"; auto &args = opConfig.structuredOp->args;