@@ -7040,10 +7040,10 @@ SDValue DAGTypeLegalizer::WidenVecOp_INSERT_SUBVECTOR(SDNode *N) {
70407040 SDValue SubVec = N->getOperand (1 );
70417041 SDValue InVec = N->getOperand (0 );
70427042
7043- SDValue OrigSubVec ;
7043+ EVT OrigVT ;
70447044 if (getTypeAction (SubVec.getValueType ()) == TargetLowering::TypeWidenVector) {
7045- OrigSubVec = std::move ( SubVec);
7046- SubVec = GetWidenedVector (OrigSubVec );
7045+ OrigVT = SubVec. getValueType ( );
7046+ SubVec = GetWidenedVector (SubVec );
70477047 }
70487048
70497049 EVT SubVT = SubVec.getValueType ();
@@ -7075,19 +7075,18 @@ SDValue DAGTypeLegalizer::WidenVecOp_INSERT_SUBVECTOR(SDNode *N) {
70757075
70767076 // If the operands can't be widened legally, just replace the INSERT_SUBVECTOR
70777077 // with a series of INSERT_VECTOR_ELT
7078- EVT OrigVT = OrigSubVec.getValueType ();
70797078 unsigned Idx = N->getConstantOperandVal (2 );
70807079
7081- SDValue InsertElt;
7080+ SDValue InsertElt = InVec ;
70827081 SDLoc DL (N);
70837082 EVT VectorIdxTy = TLI.getVectorIdxTy (DAG.getDataLayout ());
70847083 for (unsigned I = 0 ; I < OrigVT.getVectorNumElements (); ++I) {
70857084 SDValue ExtractElt =
70867085 DAG.getNode (ISD::EXTRACT_VECTOR_ELT, DL, VT.getScalarType (), SubVec,
70877086 DAG.getConstant (I, DL, VectorIdxTy));
70887087 InsertElt =
7089- DAG.getNode (ISD::INSERT_VECTOR_ELT, DL, VT, I != 0 ? InsertElt : InVec ,
7090- ExtractElt, DAG.getConstant (I + Idx, DL, VectorIdxTy));
7088+ DAG.getNode (ISD::INSERT_VECTOR_ELT, DL, VT, InsertElt, ExtractElt ,
7089+ DAG.getConstant (I + Idx, DL, VectorIdxTy));
70917090 }
70927091
70937092 return InsertElt;
0 commit comments