diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td --- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td +++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td @@ -295,7 +295,7 @@ def LLVM_AllocaOp : LLVM_Op<"alloca">, MemoryOpWithAlignmentBase { let arguments = (ins AnyInteger:$arraySize, OptionalAttr:$alignment); - let results = (outs LLVM_AnyPointer:$res); + let results = (outs Res]>:$res); string llvmBuilder = [{ auto *inst = builder.CreateAlloca( $_resultType->getPointerElementType(), $arraySize); diff --git a/mlir/test/Dialect/LLVMIR/canonicalize.mlir b/mlir/test/Dialect/LLVMIR/canonicalize.mlir --- a/mlir/test/Dialect/LLVMIR/canonicalize.mlir +++ b/mlir/test/Dialect/LLVMIR/canonicalize.mlir @@ -122,3 +122,11 @@ %0 = llvm.mlir.addressof @fp : !llvm.ptr> llvm.return } + +// CHECK-LABEL: alloca_dce +// CHECK-NEXT: llvm.return +llvm.func @alloca_dce() { + %c1_i64 = arith.constant 1 : i64 + %0 = llvm.alloca %c1_i64 x i32 : (i64) -> !llvm.ptr + llvm.return +}