From 06cc2f2f122ab2ce6c2ffb5cd6f87f0334919ca3 Mon Sep 17 00:00:00 2001 From: Alex Zinenko Date: Wed, 5 Jan 2022 18:38:10 +0100 Subject: [PATCH] [mlir] Align LLVM_Type ODS constraint on type verifiers Verify only the outer type being LLVM-compatible, the elemental types if present are already checked by the type verifiers. This makes some LLVM dialect operations compatible with mixed-dialect types that appear during progressive lowering. Reviewed By: wsmoses Differential Revision: https://reviews.llvm.org/D116671 --- mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td | 2 +- mlir/test/Dialect/LLVMIR/types.mlir | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td index f4f73a8ddb14..386bd76bf1d5 100644 --- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td +++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td @@ -57,7 +57,7 @@ def LLVM_Dialect : Dialect { // LLVM dialect type. def LLVM_Type : DialectType, + CPred<"::mlir::LLVM::isCompatibleOuterType($_self)">, "LLVM dialect-compatible type">; // Type constraint accepting LLVM token type. diff --git a/mlir/test/Dialect/LLVMIR/types.mlir b/mlir/test/Dialect/LLVMIR/types.mlir index 9a53f56ce70e..6e1a571d0ca1 100644 --- a/mlir/test/Dialect/LLVMIR/types.mlir +++ b/mlir/test/Dialect/LLVMIR/types.mlir @@ -178,9 +178,11 @@ func @verbose() { // CHECK-LABEL: @ptr_elem_interface // CHECK-COUNT-3: !llvm.ptr +// CHECK: llvm.mlir.undef : !llvm.ptr func @ptr_elem_interface(%arg0: !llvm.ptr) { %0 = llvm.load %arg0 : !llvm.ptr llvm.store %0, %arg0 : !llvm.ptr + llvm.mlir.undef : !llvm.ptr return }