diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp --- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp @@ -180,8 +180,6 @@ if (auto elementsAttr = attr.dyn_cast()) { assert(elementsAttr.getType().hasStaticShape()); - assert(elementsAttr.getNumElements() != 0 && - "unexpected empty elements attribute"); assert(!elementsAttr.getType().getShape().empty() && "unexpected empty elements attribute shape"); diff --git a/mlir/test/Target/LLVMIR/llvmir.mlir b/mlir/test/Target/LLVMIR/llvmir.mlir --- a/mlir/test/Target/LLVMIR/llvmir.mlir +++ b/mlir/test/Target/LLVMIR/llvmir.mlir @@ -18,6 +18,9 @@ // CHECK: @int_global_array = internal global [3 x i32] [i32 62, i32 62, i32 62] llvm.mlir.global internal @int_global_array(dense<62> : vector<3xi32>) : !llvm.array<3 x i32> +// CHECK: @int_global_array_zero_elements = internal constant [3 x [0 x [4 x float]]] zeroinitializer +llvm.mlir.global internal constant @int_global_array_zero_elements(dense<> : tensor<3x0x4xf32>) : !llvm.array<3 x array<0 x array<4 x f32>>> + // CHECK: @i32_global_addr_space = internal addrspace(7) global i32 62 llvm.mlir.global internal @i32_global_addr_space(62: i32) {addr_space = 7 : i32} : i32 @@ -1585,4 +1588,3 @@ // CHECK: ![[PIPELINE_DISABLE_NODE]] = !{!"llvm.loop.pipeline.disable", i1 true} // CHECK: ![[II_NODE]] = !{!"llvm.loop.pipeline.initiationinterval", i32 2} // CHECK: ![[ACCESS_GROUPS_NODE]] = !{![[GROUP_NODE1]], ![[GROUP_NODE2]]} -