diff --git a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp index 6ce8f61e9e090..ba146f883b39f 100644 --- a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp @@ -1942,8 +1942,7 @@ bool RISCVDAGToDAGISel::selectShiftMask(SDValue N, unsigned ShiftWidth, if (Imm != 0 && Imm % ShiftWidth == 0) { SDLoc DL(N); EVT VT = N.getValueType(); - SDValue Zero = - CurDAG->getCopyFromReg(CurDAG->getEntryNode(), DL, RISCV::X0, VT); + SDValue Zero = CurDAG->getRegister(RISCV::X0, VT); unsigned NegOpc = VT == MVT::i64 ? RISCV::SUBW : RISCV::SUB; MachineSDNode *Neg = CurDAG->getMachineNode(NegOpc, DL, VT, Zero, N.getOperand(1));