diff --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp --- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp @@ -2745,11 +2745,13 @@ DAG.getConstant(Offsets[VecIdx], dl, PtrVT)); Value *srcValue = Constant::getNullValue(PointerType::get( EltVT.getTypeForEVT(F->getContext()), ADDRESS_SPACE_PARAM)); - SDValue P = - DAG.getLoad(VecVT, dl, Root, VecAddr, - MachinePointerInfo(srcValue), aggregateIsPacked, - MachineMemOperand::MODereferenceable | - MachineMemOperand::MOInvariant); + MaybeAlign Alignment = std::nullopt; + if (aggregateIsPacked) + Alignment = Align(1); + SDValue P = DAG.getLoad(VecVT, dl, Root, VecAddr, + MachinePointerInfo(srcValue), Alignment, + MachineMemOperand::MODereferenceable | + MachineMemOperand::MOInvariant); if (P.getNode()) P.getNode()->setIROrder(idx + 1); for (unsigned j = 0; j < NumElts; ++j) {