https://github.com/skc7 created https://github.com/llvm/llvm-project/pull/199516
None >From bd7c21a4e37c2c00abdf90fa10e1a6a36685e9ea Mon Sep 17 00:00:00 2001 From: skc7 <[email protected]> Date: Mon, 25 May 2026 15:08:32 +0530 Subject: [PATCH] [CIR] Support void calls in cir.call_llvm_intrinsic lowering --- .../CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp index c4e98e299dfc1..8940272d27ffe 100644 --- a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp +++ b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp @@ -358,8 +358,12 @@ createCallLLVMIntrinsicOp(mlir::ConversionPatternRewriter &rewriter, mlir::Type resultTy, mlir::ValueRange operands) { auto intrinsicNameAttr = mlir::StringAttr::get(rewriter.getContext(), intrinsicName); - return mlir::LLVM::CallIntrinsicOp::create(rewriter, loc, resultTy, - intrinsicNameAttr, operands); + // CallIntrinsicOp has distinct void / single-result create overloads. + if (resultTy) + return mlir::LLVM::CallIntrinsicOp::create(rewriter, loc, resultTy, + intrinsicNameAttr, operands); + return mlir::LLVM::CallIntrinsicOp::create(rewriter, loc, intrinsicNameAttr, + operands); } static mlir::LLVM::CallIntrinsicOp replaceOpWithCallLLVMIntrinsicOp( @@ -375,10 +379,14 @@ static mlir::LLVM::CallIntrinsicOp replaceOpWithCallLLVMIntrinsicOp( mlir::LogicalResult CIRToLLVMLLVMIntrinsicCallOpLowering::matchAndRewrite( cir::LLVMIntrinsicCallOp op, OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const { - mlir::Type llvmResTy = - getTypeConverter()->convertType(op->getResultTypes()[0]); - if (!llvmResTy) - return op.emitError("expected LLVM result type"); + // Result is Optional on the op, so void intrinsics have zero + // results; leave llvmResTy null in that case. + mlir::Type llvmResTy; + if (op->getNumResults() != 0) { + llvmResTy = getTypeConverter()->convertType(op->getResultTypes()[0]); + if (!llvmResTy) + return op.emitError("expected LLVM result type"); + } StringRef name = op.getIntrinsicName(); // Some LLVM intrinsics require ElementType attribute to be attached to _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
