[llvm] a721ddb - Update MaxMinLatency even if dependencies have been already scheduled.
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 9 06:50:23 PST 2021
Author: Sergei Larin
Date: 2021-11-09T06:47:49-08:00
New Revision: a721ddbae9832ff4abe238e157426389f54f0fc0
URL: https://github.com/llvm/llvm-project/commit/a721ddbae9832ff4abe238e157426389f54f0fc0
DIFF: https://github.com/llvm/llvm-project/commit/a721ddbae9832ff4abe238e157426389f54f0fc0.diff
LOG: Update MaxMinLatency even if dependencies have been already scheduled.
Covers an extremely rare corner case on internal book keeping.
Added:
Modified:
llvm/lib/Target/Hexagon/HexagonMachineScheduler.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/Hexagon/HexagonMachineScheduler.cpp b/llvm/lib/Target/Hexagon/HexagonMachineScheduler.cpp
index 0e6555024303..47bebf77b31b 100644
--- a/llvm/lib/Target/Hexagon/HexagonMachineScheduler.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonMachineScheduler.cpp
@@ -286,9 +286,6 @@ void ConvergingVLIWScheduler::initialize(ScheduleDAGMI *dag) {
}
void ConvergingVLIWScheduler::releaseTopNode(SUnit *SU) {
- if (SU->isScheduled)
- return;
-
for (const SDep &PI : SU->Preds) {
unsigned PredReadyCycle = PI.getSUnit()->TopReadyCycle;
unsigned MinLatency = PI.getLatency();
@@ -298,13 +295,12 @@ void ConvergingVLIWScheduler::releaseTopNode(SUnit *SU) {
if (SU->TopReadyCycle < PredReadyCycle + MinLatency)
SU->TopReadyCycle = PredReadyCycle + MinLatency;
}
- Top.releaseNode(SU, SU->TopReadyCycle);
+
+ if (!SU->isScheduled)
+ Top.releaseNode(SU, SU->TopReadyCycle);
}
void ConvergingVLIWScheduler::releaseBottomNode(SUnit *SU) {
- if (SU->isScheduled)
- return;
-
assert(SU->getInstr() && "Scheduled SUnit must have instr");
for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
@@ -317,7 +313,9 @@ void ConvergingVLIWScheduler::releaseBottomNode(SUnit *SU) {
if (SU->BotReadyCycle < SuccReadyCycle + MinLatency)
SU->BotReadyCycle = SuccReadyCycle + MinLatency;
}
- Bot.releaseNode(SU, SU->BotReadyCycle);
+
+ if (!SU->isScheduled)
+ Bot.releaseNode(SU, SU->BotReadyCycle);
}
/// Does this SU have a hazard within the current instruction group.
More information about the llvm-commits
mailing list