diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp index 6a5a0b4163f39..6196ff45b7293 100644 --- a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp +++ b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp @@ -3211,8 +3211,11 @@ mlir::LogicalResult CIRToLLVMNotOpLowering::matchAndRewrite( if (isVector) { const uint64_t numElements = mlir::cast(op.getType()).getSize(); - SmallVector values(numElements, -1); - mlir::DenseIntElementsAttr denseVec = rewriter.getI32VectorAttr(values); + const unsigned eltWidth = + mlir::cast(elementType).getWidth(); + SmallVector values(numElements, APInt::getAllOnes(eltWidth)); + mlir::DenseIntElementsAttr denseVec = mlir::DenseIntElementsAttr::get( + mlir::cast(llvmType), values); minusOne = mlir::LLVM::ConstantOp::create(rewriter, loc, llvmType, denseVec); } else {