@@ -7,74 +7,10 @@ define i32 @test_remove_freeze(i32 %x) {
77; CHECK-LABEL: define i32 @test_remove_freeze(
88; CHECK-SAME: i32 [[X:%.*]]) {
99; CHECK-NEXT: [[ENTRY:.*:]]
10- ; CHECK-NEXT: br i1 true, label %[[PATHA:.*]], label %[[PATHB:.*]]
11- ; CHECK: [[PATHA]]:
12- ; CHECK-NEXT: br label %[[MERGE:.*]]
13- ; CHECK: [[PATHB]]:
14- ; CHECK-NEXT: br label %[[MERGE]]
15- ; CHECK: [[MERGE]]:
16- ; CHECK-NEXT: [[FROZEN:%.*]] = phi i32 [ [[X]], %[[PATHA]] ], [ [[X]], %[[PATHB]] ]
17- ; CHECK-NEXT: [[Y:%.*]] = add i32 [[FROZEN]], 1
18- ; CHECK-NEXT: ret i32 [[Y]]
19- ;
20- entry:
21- %f = freeze i32 %x
22- %y = add i32 %f , 1
23- ret i32 %y
24- }
25-
26- define i32 @test_remove_freeze_safe (i32 %x ) {
27- ; CHECK-LABEL: define i32 @test_remove_freeze_safe(
28- ; CHECK-SAME: i32 [[X:%.*]]) {
29- ; CHECK-NEXT: [[ENTRY:.*:]]
30- ; CHECK-NEXT: [[FROZEN:%.*]] = add i32 1, 0
31- ; CHECK-NEXT: [[Y:%.*]] = add i32 [[FROZEN]], 1
32- ; CHECK-NEXT: ret i32 [[Y]]
33- ;
34- entry:
35- %safe = add i32 1 , 0
36- %f = freeze i32 %safe
37- %y = add i32 %f , 1
38- ret i32 %y
39- }
40-
41- define i32 @test_freeze_poison () {
42- ; CHECK-LABEL: define i32 @test_freeze_poison() {
43- ; CHECK-NEXT: [[ENTRY:.*:]]
44- ; CHECK-NEXT: [[X1:%.*]] = select i1 true, i32 42, i32 poison
45- ; CHECK-NEXT: br i1 true, label %[[PATHA:.*]], label %[[PATHB:.*]]
46- ; CHECK: [[PATHA]]:
47- ; CHECK-NEXT: br label %[[MERGE:.*]]
48- ; CHECK: [[PATHB]]:
49- ; CHECK-NEXT: br label %[[MERGE]]
50- ; CHECK: [[MERGE]]:
51- ; CHECK-NEXT: [[X:%.*]] = phi i32 [ [[X1]], %[[PATHA]] ], [ [[X1]], %[[PATHB]] ]
5210; CHECK-NEXT: [[Y:%.*]] = add i32 [[X]], 1
5311; CHECK-NEXT: ret i32 [[Y]]
5412;
5513entry:
56- %x = select i1 true , i32 42 , i32 poison
57- %f = freeze i32 %x
58- %y = add i32 %f , 1
59- ret i32 %y
60- }
61-
62- define i32 @test_freeze_undef () {
63- ; CHECK-LABEL: define i32 @test_freeze_undef() {
64- ; CHECK-NEXT: [[ENTRY:.*:]]
65- ; CHECK-NEXT: [[X:%.*]] = select i1 undef, i32 42, i32 2
66- ; CHECK-NEXT: br i1 true, label %[[PATHA:.*]], label %[[PATHB:.*]]
67- ; CHECK: [[PATHA]]:
68- ; CHECK-NEXT: br label %[[MERGE:.*]]
69- ; CHECK: [[PATHB]]:
70- ; CHECK-NEXT: br label %[[MERGE]]
71- ; CHECK: [[MERGE]]:
72- ; CHECK-NEXT: [[FROZEN:%.*]] = phi i32 [ [[X]], %[[PATHA]] ], [ [[X]], %[[PATHB]] ]
73- ; CHECK-NEXT: [[Y:%.*]] = add i32 [[FROZEN]], 1
74- ; CHECK-NEXT: ret i32 [[Y]]
75- ;
76- entry:
77- %x = select i1 undef , i32 42 , i32 2
7814 %f = freeze i32 %x
7915 %y = add i32 %f , 1
8016 ret i32 %y
0 commit comments