diff --git a/mlir/include/mlir/Conversion/LLVMCommon/TypeConverter.h b/mlir/include/mlir/Conversion/LLVMCommon/TypeConverter.h --- a/mlir/include/mlir/Conversion/LLVMCommon/TypeConverter.h +++ b/mlir/include/mlir/Conversion/LLVMCommon/TypeConverter.h @@ -92,13 +92,6 @@ const LowerToLLVMOptions &getOptions() const { return options; } - /// Set the lowering options to `newOptions`. Note: using this after some - /// some conversions have been performed can lead to inconsistencies in the - /// IR. - void dangerousSetOptions(LowerToLLVMOptions newOptions) { - options = std::move(newOptions); - } - /// Promote the LLVM representation of all operands including promoting MemRef /// descriptors to stack and use pointers to struct to avoid the complexity /// of the platform-specific C/C++ ABI lowering related to struct argument diff --git a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp --- a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp +++ b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp @@ -981,24 +981,12 @@ gpu::LaunchFuncOp launchOp, OpAdaptor adaptor, OpBuilder &builder) const { auto loc = launchOp.getLoc(); auto numKernelOperands = launchOp.getNumKernelOperands(); - SmallVector arguments; - if (kernelBarePtrCallConv) { - // Hack the bare pointer value on just for the argument promotion - const LLVMTypeConverter *converter = getTypeConverter(); - LowerToLLVMOptions options = converter->getOptions(); - LowerToLLVMOptions overrideToMatchKernelOpts = options; - overrideToMatchKernelOpts.useBarePtrCallConv = true; - LLVMTypeConverter newConverter = *converter; - newConverter.dangerousSetOptions(overrideToMatchKernelOpts); - arguments = newConverter.promoteOperands( - loc, launchOp.getOperands().take_back(numKernelOperands), - adaptor.getOperands().take_back(numKernelOperands), builder); - } else { - arguments = getTypeConverter()->promoteOperands( - loc, launchOp.getOperands().take_back(numKernelOperands), - adaptor.getOperands().take_back(numKernelOperands), builder); - } - + // Note: If `useBarePtrCallConv` is set in the type converter's options, + // the value of `kernelBarePtrCallConv` will be ignored. + SmallVector arguments = getTypeConverter()->promoteOperands( + loc, launchOp.getOperands().take_back(numKernelOperands), + adaptor.getOperands().take_back(numKernelOperands), builder, + /*useBarePtrCallConv=*/kernelBarePtrCallConv); auto numArguments = arguments.size(); SmallVector argumentTypes; argumentTypes.reserve(numArguments); @@ -1112,23 +1100,11 @@ stream = streamCreateCallBuilder.create(loc, rewriter, {}).getResult(); // Lower the kernel operands to match kernel parameters. - SmallVector arguments; - if (kernelBarePtrCallConv) { - // Hack the bare pointer value on just for the argument promotion - const LLVMTypeConverter *converter = getTypeConverter(); - LowerToLLVMOptions options = converter->getOptions(); - LowerToLLVMOptions overrideToMatchKernelOpts = options; - overrideToMatchKernelOpts.useBarePtrCallConv = true; - LLVMTypeConverter newConverter = *converter; - newConverter.dangerousSetOptions(overrideToMatchKernelOpts); - arguments = - newConverter.promoteOperands(loc, launchOp.getKernelOperands(), - adaptor.getKernelOperands(), rewriter); - } else { - arguments = getTypeConverter()->promoteOperands( - loc, launchOp.getKernelOperands(), adaptor.getKernelOperands(), - rewriter); - } + // Note: If `useBarePtrCallConv` is set in the type converter's options, + // the value of `kernelBarePtrCallConv` will be ignored. + SmallVector arguments = getTypeConverter()->promoteOperands( + loc, launchOp.getKernelOperands(), adaptor.getKernelOperands(), + rewriter, /*useBarePtrCallConv=*/kernelBarePtrCallConv); rewriter.create( launchOp.getLoc(), launchOp.getKernelAttr(),