diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td --- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td +++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td @@ -130,8 +130,9 @@ // Type constraint accepting any LLVM non-aggregate type, i.e. not structure or // array. -def LLVM_AnyNonAggregate : Type, - "LLVM non-aggregate type">; +def LLVM_AnyNonAggregate : Type]>, + "LLVM-compatible non-aggregate type">; // Type constraint accepting any LLVM vector type. def LLVM_AnyVector : Type, diff --git a/mlir/test/Dialect/LLVMIR/invalid.mlir b/mlir/test/Dialect/LLVMIR/invalid.mlir --- a/mlir/test/Dialect/LLVMIR/invalid.mlir +++ b/mlir/test/Dialect/LLVMIR/invalid.mlir @@ -1119,3 +1119,11 @@ } llvm.func @callee() -> !llvm.struct<(i32, f32)> + +// ----- + +func @bitcast(%arg0: vector<2x3xf32>) { + // expected-error @below {{op operand #0 must be LLVM-compatible non-aggregate type}} + llvm.bitcast %arg0 : vector<2x3xf32> to vector<2x3xi32> + return +}