[SimplifyCFG] test for trunc condition (NFC)

This commit is contained in:
Andreas Jonson 2025-04-12 12:25:40 +02:00
parent 8b40a09bf5
commit 4dd80b73b0

View File

@ -84,6 +84,37 @@ final_right:
ret void
}
define void @one_pred_trunc_cond(i8 %v0, i8 %v1) {
; CHECK-LABEL: @one_pred_trunc_cond(
; CHECK-NEXT: pred:
; CHECK-NEXT: [[C0:%.*]] = icmp eq i8 [[V0:%.*]], 0
; CHECK-NEXT: br i1 [[C0]], label [[DISPATCH:%.*]], label [[FINAL_RIGHT:%.*]]
; CHECK: dispatch:
; CHECK-NEXT: [[C1:%.*]] = trunc i8 [[V1:%.*]] to i1
; CHECK-NEXT: br i1 [[C1]], label [[FINAL_LEFT:%.*]], label [[FINAL_RIGHT]]
; CHECK: common.ret:
; CHECK-NEXT: ret void
; CHECK: final_left:
; CHECK-NEXT: call void @sideeffect0()
; CHECK-NEXT: br label [[COMMON_RET:%.*]]
; CHECK: final_right:
; CHECK-NEXT: call void @sideeffect1()
; CHECK-NEXT: br label [[COMMON_RET]]
;
pred:
%c0 = icmp eq i8 %v0, 0
br i1 %c0, label %dispatch, label %final_right
dispatch:
%c1 = trunc i8 %v1 to i1
br i1 %c1, label %final_left, label %final_right
final_left:
call void @sideeffect0()
ret void
final_right:
call void @sideeffect1()
ret void
}
; More complex case, there's an extra op that is safe to execute unconditionally.
define void @one_pred_with_extra_op(i8 %v0, i8 %v1) {