[Mlir-commits] [mlir] [MLIR][LLVM] Add vararg support in LLVM::LLVMFuncOp (PR #67274)
Oleksandr Alex Zinenko
llvmlistbot at llvm.org
Tue Sep 26 07:50:28 PDT 2023
================
@@ -1018,6 +1018,27 @@ static void printStoreType(OpAsmPrinter &printer, Operation *op,
// CallOp
//===----------------------------------------------------------------------===//
+/// Get the MLIR Op-like result types of a LLVMFunctionType
+static SmallVector<Type, 1> getCallOpResults(LLVMFunctionType calleeType) {
+ SmallVector<Type, 1> results;
+ Type resultType = calleeType.getReturnType();
+ if (!isa<LLVM::LLVMVoidType>(resultType))
+ results.push_back(resultType);
+ return results;
+}
+
+/// Construct a LLVMFunctionType from MLIR results and args
+static LLVMFunctionType getLLVMFuncType(OpBuilder &builder, TypeRange results,
+ ValueRange args) {
+ Type resultType;
+ if (results.empty())
+ resultType = LLVMVoidType::get(builder.getContext());
+ else
+ resultType = results.front();
+ return LLVMFunctionType::get(resultType, llvm::to_vector(args.getTypes()),
----------------
ftynse wrote:
Yeah, it can be converted to `TypeRange` but not to `ArrayRef<Type>`. The caller needs to be updated to take `TypeRange` instead, but it's out of scope for this PR.
https://github.com/llvm/llvm-project/pull/67274
More information about the Mlir-commits
mailing list