The insertion of waterfall loops splits the current basic block into
three blocks. So the basic block that we iterate over must be updated.
This failed assert(!NodePtr->isKnownSentinel()) in ilist_iterator for
divergent calls in branches before.
Paths
| Differential D90596
[AMDGPU] Fix iterating in SIFixSGPRCopies ClosedPublic Authored by sebastian-ne on Nov 2 2020, 4:56 AM.
Details
Summary The insertion of waterfall loops splits the current basic block into This failed assert(!NodePtr->isKnownSentinel()) in ilist_iterator for
Diff Detail
Event Timeline
This revision is now accepted and ready to land.Nov 4 2020, 9:36 AM This revision was landed with ongoing or failed builds.Nov 4 2020, 9:43 AM Closed by commit rG31a0b2834f88: [AMDGPU] Fix iterating in SIFixSGPRCopies (authored by sebastian-ne). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 302874 llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp
llvm/lib/Target/AMDGPU/SIInstrInfo.h
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
llvm/test/CodeGen/AMDGPU/indirect-call.ll
|
I'm not sure this is an entirely reliable way to get the parent if the instruction was erased (I guess this doesn't happen for any of the copy-like cases). Other places that change the control flow in situations like this return the new block from the modifying function and check if it matches the original