Skip to content

Commit 6701c0b

Browse files
committed
[JumpThreading] Add a test case that has a phi with undef; NFC
1 parent c891f51 commit 6701c0b

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

llvm/test/Transforms/JumpThreading/freeze.ll

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,50 @@ F2:
4949
ret i32 %B
5050
}
5151

52+
define i32 @test1_undef(i1 %cond) {
53+
; CHECK-LABEL: @test1_undef(
54+
; CHECK-NEXT: br i1 [[COND:%.*]], label [[T1:%.*]], label [[F1:%.*]]
55+
; CHECK: T1:
56+
; CHECK-NEXT: [[V1:%.*]] = call i32 @f1()
57+
; CHECK-NEXT: br label [[MERGE:%.*]]
58+
; CHECK: F1:
59+
; CHECK-NEXT: [[V2:%.*]] = call i32 @f2()
60+
; CHECK-NEXT: br label [[MERGE]]
61+
; CHECK: Merge:
62+
; CHECK-NEXT: [[A:%.*]] = phi i1 [ true, [[T1]] ], [ undef, [[F1]] ]
63+
; CHECK-NEXT: [[B:%.*]] = phi i32 [ [[V1]], [[T1]] ], [ [[V2]], [[F1]] ]
64+
; CHECK-NEXT: [[A_FR:%.*]] = freeze i1 [[A]]
65+
; CHECK-NEXT: br i1 [[A_FR]], label [[T2:%.*]], label [[F2:%.*]]
66+
; CHECK: T2:
67+
; CHECK-NEXT: call void @f3()
68+
; CHECK-NEXT: ret i32 [[B]]
69+
; CHECK: F2:
70+
; CHECK-NEXT: ret i32 [[B]]
71+
;
72+
br i1 %cond, label %T1, label %F1
73+
74+
T1:
75+
%v1 = call i32 @f1()
76+
br label %Merge
77+
78+
F1:
79+
%v2 = call i32 @f2()
80+
br label %Merge
81+
82+
Merge:
83+
%A = phi i1 [true, %T1], [undef, %F1]
84+
%B = phi i32 [%v1, %T1], [%v2, %F1]
85+
%A.fr = freeze i1 %A
86+
br i1 %A.fr, label %T2, label %F2
87+
88+
T2:
89+
call void @f3()
90+
ret i32 %B
91+
92+
F2:
93+
ret i32 %B
94+
}
95+
5296
define i32 @test2(i1 %cond, i1 %cond2) {
5397
; CHECK-LABEL: @test2(
5498
; CHECK-NEXT: br i1 [[COND:%.*]], label [[T1:%.*]], label [[F1:%.*]]

0 commit comments

Comments
 (0)