Index: llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp =================================================================== --- llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp +++ llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp @@ -2067,7 +2067,9 @@ break; SDValue Src = Node->getOperand(1); auto *Ld = dyn_cast(Src); - if (!Ld) + // Can't fold load update node because the second + // output is used so that load update node can't be removed. + if (!Ld || Ld->isIndexed()) break; EVT MemVT = Ld->getMemoryVT(); // The memory VT should be the same size as the element type.