diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMTypes.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMTypes.cpp --- a/mlir/lib/Dialect/LLVMIR/IR/LLVMTypes.cpp +++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMTypes.cpp @@ -340,7 +340,7 @@ << " to be a dense integer elements attribute with 3 or 4 " "elements"; } - if (!key.getElementType().isInteger(8)) { + if (key.getElementType() && !key.getElementType().isInteger(8)) { return emitError(loc) << "unexpected layout attribute for pointer to " << key.getElementType(); } diff --git a/mlir/test/Dialect/LLVMIR/layout.mlir b/mlir/test/Dialect/LLVMIR/layout.mlir --- a/mlir/test/Dialect/LLVMIR/layout.mlir +++ b/mlir/test/Dialect/LLVMIR/layout.mlir @@ -46,7 +46,8 @@ module attributes { dlti.dl_spec = #dlti.dl_spec< #dlti.dl_entry, dense<[32, 32, 64]> : vector<3xi32>>, - #dlti.dl_entry, dense<[64, 64, 64]> : vector<3xi32>> + #dlti.dl_entry, dense<[64, 64, 64]> : vector<3xi32>>, + #dlti.dl_entry, dense<[32, 64, 64]> : vector<3xi32>> >} { // CHECK: @spec func.func @spec() { @@ -85,6 +86,11 @@ // CHECK: preferred = 8 // CHECK: size = 4 "test.data_layout_query"() : () -> !llvm.ptr<3> + // CHECK: alignment = 8 + // CHECK: bitsize = 32 + // CHECK: preferred = 8 + // CHECK: size = 4 + "test.data_layout_query"() : () -> !llvm.ptr<4> return } }