[Mlir-commits] [mlir] 6dd5b1e - [MLIR][LLVM] Add error if using incorrect attribute type for specifying LLVM linkage
William S. Moses
llvmlistbot at llvm.org
Mon Sep 27 10:24:10 PDT 2021
Author: William S. Moses
Date: 2021-09-27T13:24:05-04:00
New Revision: 6dd5b1e33e041c51549460fbd3364dc7242d60ce
URL: https://github.com/llvm/llvm-project/commit/6dd5b1e33e041c51549460fbd3364dc7242d60ce
DIFF: https://github.com/llvm/llvm-project/commit/6dd5b1e33e041c51549460fbd3364dc7242d60ce.diff
LOG: [MLIR][LLVM] Add error if using incorrect attribute type for specifying LLVM linkage
Address post-commit review in https://reviews.llvm.org/D108524 to add appropriate diagnostics.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D110566
Added:
Modified:
mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
mlir/test/Conversion/StandardToLLVM/convert-funcs.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
index 8327492a780f6..1d5577c639001 100644
--- a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
+++ b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
@@ -266,9 +266,14 @@ struct FuncOpConversionBase : public ConvertOpToLLVMPattern<FuncOp> {
// functions have linkage.
LLVM::Linkage linkage = LLVM::Linkage::External;
if (funcOp->hasAttr("llvm.linkage")) {
- linkage = funcOp->getAttr("llvm.linkage")
- .cast<mlir::LLVM::LinkageAttr>()
- .getLinkage();
+ auto attr =
+ funcOp->getAttr("llvm.linkage").dyn_cast<mlir::LLVM::LinkageAttr>();
+ if (!attr) {
+ funcOp->emitError()
+ << "Contains llvm.linkage attribute not of type LLVM::LinkageAttr";
+ return nullptr;
+ }
+ linkage = attr.getLinkage();
}
auto newFuncOp = rewriter.create<LLVM::LLVMFuncOp>(
funcOp.getLoc(), funcOp.getName(), llvmType, linkage,
diff --git a/mlir/test/Conversion/StandardToLLVM/convert-funcs.mlir b/mlir/test/Conversion/StandardToLLVM/convert-funcs.mlir
index fa60fcd1bd83c..51f4b9aa71fe0 100644
--- a/mlir/test/Conversion/StandardToLLVM/convert-funcs.mlir
+++ b/mlir/test/Conversion/StandardToLLVM/convert-funcs.mlir
@@ -1,4 +1,4 @@
-// RUN: mlir-opt -convert-std-to-llvm %s | FileCheck %s
+// RUN: mlir-opt -convert-std-to-llvm -split-input-file -verify-diagnostics %s | FileCheck %s
//CHECK: llvm.func @second_order_arg(!llvm.ptr<func<void ()>>)
func private @second_order_arg(%arg0 : () -> ())
@@ -62,3 +62,6 @@ func @indirect_call(%arg0: (f32) -> i32, %arg1: f32) -> i32 {
return %0 : i32
}
+// -----
+
+func private @badllvmlinkage(i32) attributes { "llvm.linkage" = 3 : i64 } // expected-error {{Contains llvm.linkage attribute not of type LLVM::LinkageAttr}}
More information about the Mlir-commits
mailing list