================ @@ -1500,6 +1507,14 @@ static void prepareTypeConverter(mlir::LLVMTypeConverter &converter, converter.addConversion([&](cir::BF16Type type) -> mlir::Type { return mlir::BFloat16Type::get(type.getContext()); }); + converter.addConversion([&](cir::FuncType type) -> mlir::Type { + auto result = converter.convertType(type.getReturnType()); + llvm::SmallVector<mlir::Type> arguments; + if (converter.convertTypes(type.getInputs(), arguments).failed()) + llvm_unreachable("Failed to convert function type parameters"); ---------------- Lancern wrote:
I just realized that we could indicate failure by returning an empty `std::optional` from the converter function, see https://github.com/llvm/llvm-project/blob/252ba8e3fb361772003c38566c99233c07adc4bd/mlir/include/mlir/Transforms/DialectConversion.h#L144-L148 . Maybe we could return an `std::nullopt` here instead? https://github.com/llvm/llvm-project/pull/139748 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits