diff options
author | Ruiling, Song <ruiling.song@amd.com> | 2025-05-28 14:53:46 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-28 14:53:46 +0800 |
commit | 3e47d8debad01801dcc2128001f2f1465c29b748 (patch) | |
tree | 1fb675957f8ffbea6d171bc214f097faa19bd6cf /llvm/lib/CodeGen/MachineScheduler.cpp | |
parent | 47c04c735acde68c72500e21b6ebd606b37064b3 (diff) | |
download | llvm-3e47d8debad01801dcc2128001f2f1465c29b748.zip llvm-3e47d8debad01801dcc2128001f2f1465c29b748.tar.gz llvm-3e47d8debad01801dcc2128001f2f1465c29b748.tar.bz2 |
MachineScheduler: Reset next cluster candidate for each node (#139513)
When a node is picked, we should reset its next cluster candidate to
null before releasing its successors/predecessors.
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineScheduler.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineScheduler.cpp b/llvm/lib/CodeGen/MachineScheduler.cpp index 0985f47..6e9a4a7 100644 --- a/llvm/lib/CodeGen/MachineScheduler.cpp +++ b/llvm/lib/CodeGen/MachineScheduler.cpp @@ -967,6 +967,12 @@ void ScheduleDAGMI::releaseSucc(SUnit *SU, SDep *SuccEdge) { /// releaseSuccessors - Call releaseSucc on each of SU's successors. void ScheduleDAGMI::releaseSuccessors(SUnit *SU) { + // Reset the next successor, For example, we want to cluster A B C. + // After A is picked, we will set B as next cluster succ, but if we pick + // D instead of B after A, then we need to reset the next cluster succ because + // we have decided to not pick the cluster candidate B during pickNode(). + // Leaving B as the NextClusterSucc just make things messy. + NextClusterSucc = nullptr; for (SDep &Succ : SU->Succs) releaseSucc(SU, &Succ); } @@ -1004,6 +1010,7 @@ void ScheduleDAGMI::releasePred(SUnit *SU, SDep *PredEdge) { /// releasePredecessors - Call releasePred on each of SU's predecessors. void ScheduleDAGMI::releasePredecessors(SUnit *SU) { + NextClusterPred = nullptr; for (SDep &Pred : SU->Preds) releasePred(SU, &Pred); } |