From 37c750a5fd13ebecf143a7c918aa981fc4ce3e3d Mon Sep 17 00:00:00 2001 From: Hendrik Greving Date: Wed, 11 Jan 2023 09:12:48 -0800 Subject: [PATCH] [mlir:LLVM] Fix minor bug, missing cconv translation Fixes translating the calling convention to LLVM-IR, possibly missed by https://reviews.llvm.org/D126161, and adds a test. --- mlir/lib/Target/LLVMIR/ModuleTranslation.cpp | 1 + mlir/test/Dialect/LLVMIR/func.mlir | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp index b5c1bef..33403b0 100644 --- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp @@ -883,6 +883,7 @@ LogicalResult ModuleTranslation::convertFunctionSignatures() { cast(convertType(function.getFunctionType()))); llvm::Function *llvmFunc = cast(llvmFuncCst.getCallee()); llvmFunc->setLinkage(convertLinkageToLLVM(function.getLinkage())); + llvmFunc->setCallingConv(convertCConvToLLVM(function.getCConv())); mapFunction(function.getName(), llvmFunc); addRuntimePreemptionSpecifier(function.getDsoLocal(), llvmFunc); diff --git a/mlir/test/Dialect/LLVMIR/func.mlir b/mlir/test/Dialect/LLVMIR/func.mlir index 8f34759..dedf001 100644 --- a/mlir/test/Dialect/LLVMIR/func.mlir +++ b/mlir/test/Dialect/LLVMIR/func.mlir @@ -1,6 +1,7 @@ // RUN: mlir-opt -split-input-file -verify-diagnostics %s | mlir-opt | FileCheck %s // RUN: mlir-opt -split-input-file -verify-diagnostics -mlir-print-op-generic %s | FileCheck %s --check-prefix=GENERIC // RUN: mlir-opt -split-input-file -verify-diagnostics %s -mlir-print-debuginfo | mlir-opt -mlir-print-debuginfo | FileCheck %s --check-prefix=LOCINFO +// RUN: mlir-translate -mlir-to-llvmir -split-input-file -verify-diagnostics %s | FileCheck %s --check-prefix=CHECK-LLVM module { // GENERIC: "llvm.func" @@ -8,7 +9,7 @@ module { // GENERIC-SAME: sym_name = "foo" // GENERIC-SAME: () -> () // CHECK: llvm.func @foo() - "llvm.func"() ({ + "llvm.func" () ({ }) {sym_name = "foo", function_type = !llvm.func} : () -> () // GENERIC: "llvm.func" @@ -142,6 +143,11 @@ module { llvm.return } + // CHECK-LLVM: define ptx_kernel void @calling_conv + llvm.func ptx_kernelcc @calling_conv() { + llvm.return + } + // Omit the `external` linkage, which is the default, in the custom format. // Check that it is present in the generic format using its numeric value. // -- 2.7.4