diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp @@ -1155,27 +1155,30 @@ // Spill the vector to the stack. SDValue StackPtr = DAG.CreateStackTemporary(VecVT); + auto &MF = DAG.getMachineFunction(); + auto FrameIndex = cast(StackPtr.getNode())->getIndex(); + auto PtrInfo = MachinePointerInfo::getFixedStack(MF, FrameIndex); + Type *VecType = VecVT.getTypeForEVT(*DAG.getContext()); + Align Alignment = DAG.getDataLayout().getPrefTypeAlign(VecType); + SDValue Store = - DAG.getStore(DAG.getEntryNode(), dl, Vec, StackPtr, MachinePointerInfo()); + DAG.getStore(DAG.getEntryNode(), dl, Vec, StackPtr, PtrInfo, Alignment); // Store the new subvector into the specified index. SDValue SubVecPtr = TLI.getVectorElementPointer(DAG, StackPtr, VecVT, Idx); - Type *VecType = VecVT.getTypeForEVT(*DAG.getContext()); - Align Alignment = DAG.getDataLayout().getPrefTypeAlign(VecType); - Store = DAG.getStore(Store, dl, SubVec, SubVecPtr, MachinePointerInfo()); + Store = DAG.getStore(Store, dl, SubVec, SubVecPtr, + MachinePointerInfo::getUnknownStack(MF), Alignment); // Load the Lo part from the stack slot. - Lo = - DAG.getLoad(Lo.getValueType(), dl, Store, StackPtr, MachinePointerInfo()); + Lo = DAG.getLoad(Lo.getValueType(), dl, Store, StackPtr, PtrInfo, Alignment); // Increment the pointer to the other part. unsigned IncrementSize = Lo.getValueSizeInBits() / 8; StackPtr = DAG.getMemBasePlusOffset(StackPtr, IncrementSize, dl); // Load the Hi part from the stack slot. - Hi = - DAG.getLoad(Hi.getValueType(), dl, Store, StackPtr, - MachinePointerInfo().getWithOffset(IncrementSize), Alignment); + Hi = DAG.getLoad(Hi.getValueType(), dl, Store, StackPtr, + PtrInfo.getWithOffset(IncrementSize), Alignment); } void DAGTypeLegalizer::SplitVecRes_FPOWI(SDNode *N, SDValue &Lo,