forked from OSchip/llvm-project
[AMDGPU] Only remove branches in SIInstrInfo::removeBranch
Without this change _term instructions can be removed during critical edge splitting. Reviewed By: foad Differential Revision: https://reviews.llvm.org/D111126
This commit is contained in:
parent
84b0b52b03
commit
adf7043a9f
|
@ -2460,9 +2460,12 @@ unsigned SIInstrInfo::removeBranch(MachineBasicBlock &MBB,
|
|||
unsigned RemovedSize = 0;
|
||||
while (I != MBB.end()) {
|
||||
MachineBasicBlock::iterator Next = std::next(I);
|
||||
RemovedSize += getInstSizeInBytes(*I);
|
||||
I->eraseFromParent();
|
||||
++Count;
|
||||
// Skip over artificial terminators when removing instructions.
|
||||
if (I->isBranch() || I->isReturn()) {
|
||||
RemovedSize += getInstSizeInBytes(*I);
|
||||
I->eraseFromParent();
|
||||
++Count;
|
||||
}
|
||||
I = Next;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ body: |
|
|||
; CHECK-NEXT: {{ $}}
|
||||
; CHECK-NEXT: [[V_CMP_LT_I32_e64_:%[0-9]+]]:sreg_32 = V_CMP_LT_I32_e64 [[V_ADD_U32_e64_3]], [[S_MOV_B32_1]], implicit $exec
|
||||
; CHECK-NEXT: [[S_XOR_B32_:%[0-9]+]]:sreg_32 = S_XOR_B32 $exec_lo, [[V_CMP_LT_I32_e64_]], implicit-def $scc
|
||||
; CHECK-NEXT: $exec_lo = S_MOV_B32_term [[S_XOR_B32_]]
|
||||
; CHECK-NEXT: S_CBRANCH_EXECNZ %bb.2, implicit $exec
|
||||
; CHECK-NEXT: {{ $}}
|
||||
; CHECK-NEXT: bb.5:
|
||||
|
|
Loading…
Reference in New Issue