diff --git a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp index 3224a342949efb..09dc2d7e16a425 100644 --- a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp +++ b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp @@ -1005,7 +1005,13 @@ void RISCVInsertVSETVLI::computeIncomingVLVTYPE(const MachineBasicBlock &MBB) { if (!InInfo.isValid()) return; + // If no change, no need to rerun block + if (InInfo == BBInfo.Pred) + return; + BBInfo.Pred = InInfo; + LLVM_DEBUG(dbgs() << "Entry state of " << printMBBReference(MBB) + << " changed to " << BBInfo.Pred << "\n"); VSETVLIInfo TmpStatus = BBInfo.Pred.merge(BBInfo.Change);