diff --git a/mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ModuleBufferization.cpp b/mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ModuleBufferization.cpp --- a/mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ModuleBufferization.cpp +++ b/mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ModuleBufferization.cpp @@ -437,8 +437,8 @@ return funcOp->emitError() << "cannot bufferize bodiless function that " << "returns a tensor"; FunctionType bufferizedFuncType = getBufferizedFunctionType( - funcOp.getContext(), funcOp.getFunctionType().getInputs(), TypeRange{}, - state.getOptions()); + funcOp.getContext(), funcOp.getFunctionType().getInputs(), + funcOp.getFunctionType().getResults(), state.getOptions()); funcOp.setType(bufferizedFuncType); return success(); } diff --git a/mlir/test/Dialect/Linalg/comprehensive-module-bufferize.mlir b/mlir/test/Dialect/Linalg/comprehensive-module-bufferize.mlir --- a/mlir/test/Dialect/Linalg/comprehensive-module-bufferize.mlir +++ b/mlir/test/Dialect/Linalg/comprehensive-module-bufferize.mlir @@ -455,6 +455,11 @@ // ----- +// CHECK: func private @external_func_with_return_val(memref<4xi32, #{{.*}}>) -> f32 +func private @external_func_with_return_val(tensor<4xi32>) -> f32 + +// ----- + // CHECK-LABEL: func @execute_region_test( // CHECK-SAME: %[[m1:.*]]: memref {linalg.inplaceable = "true"})