forked from OSchip/llvm-project
[AMDGPU] Ignore non-SUnits edges
Summary: Ignore edges to non-SUnits (e.g. ExitSU) when checking for low latency instructions. When calling the function isLowLatencyInstruction(), an ExitSU could be on the list of successors, not necessarily a regular SU. In other places in the code there is a check "Succ->NodeNum >= DAGSize" to prevent further processing of ExitSU as "Succ->getInstr()" is NULL in such a case. Also, 8 out of 9 cases of "SUnit *Succ = SuccDep.getSUnit())" has the guard, so it is clearly an omission here. Change-Id: Ica86f0327c7b2e6bcb56958e804ea6c71084663b Reviewers: nhaehnle Reviewed By: nhaehnle Subscribers: MatzeB, arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, javed.absar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60864 llvm-svn: 358740
This commit is contained in:
parent
ce3f75df1f
commit
72e2960e52
|
@ -1874,6 +1874,8 @@ void SIScheduleDAGMI::moveLowLatencies() {
|
|||
bool CopyForLowLat = false;
|
||||
for (SDep& SuccDep : SU->Succs) {
|
||||
SUnit *Succ = SuccDep.getSUnit();
|
||||
if (SuccDep.isWeak() || Succ->NodeNum >= DAGSize)
|
||||
continue;
|
||||
if (SITII->isLowLatencyInstruction(*Succ->getInstr())) {
|
||||
CopyForLowLat = true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue