Skip to content

Commit 4dd80b7

Browse files
committed
[SimplifyCFG] test for trunc condition (NFC)
1 parent 8b40a09 commit 4dd80b7

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

llvm/test/Transforms/SimplifyCFG/fold-branch-to-common-dest.ll

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,37 @@ final_right:
8484
ret void
8585
}
8686

87+
define void @one_pred_trunc_cond(i8 %v0, i8 %v1) {
88+
; CHECK-LABEL: @one_pred_trunc_cond(
89+
; CHECK-NEXT: pred:
90+
; CHECK-NEXT: [[C0:%.*]] = icmp eq i8 [[V0:%.*]], 0
91+
; CHECK-NEXT: br i1 [[C0]], label [[DISPATCH:%.*]], label [[FINAL_RIGHT:%.*]]
92+
; CHECK: dispatch:
93+
; CHECK-NEXT: [[C1:%.*]] = trunc i8 [[V1:%.*]] to i1
94+
; CHECK-NEXT: br i1 [[C1]], label [[FINAL_LEFT:%.*]], label [[FINAL_RIGHT]]
95+
; CHECK: common.ret:
96+
; CHECK-NEXT: ret void
97+
; CHECK: final_left:
98+
; CHECK-NEXT: call void @sideeffect0()
99+
; CHECK-NEXT: br label [[COMMON_RET:%.*]]
100+
; CHECK: final_right:
101+
; CHECK-NEXT: call void @sideeffect1()
102+
; CHECK-NEXT: br label [[COMMON_RET]]
103+
;
104+
pred:
105+
%c0 = icmp eq i8 %v0, 0
106+
br i1 %c0, label %dispatch, label %final_right
107+
dispatch:
108+
%c1 = trunc i8 %v1 to i1
109+
br i1 %c1, label %final_left, label %final_right
110+
final_left:
111+
call void @sideeffect0()
112+
ret void
113+
final_right:
114+
call void @sideeffect1()
115+
ret void
116+
}
117+
87118
; More complex case, there's an extra op that is safe to execute unconditionally.
88119

89120
define void @one_pred_with_extra_op(i8 %v0, i8 %v1) {

0 commit comments

Comments
 (0)