Skip to content

Commit eae6bb3

Browse files
committed
[SCCP] Add multi-edge switch + phi test case (NFC)
1 parent 08b4a50 commit eae6bb3

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

llvm/test/Transforms/SCCP/switch.ll

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,38 @@ d:
1818
ret void
1919
}
2020

21+
define i32 @test_duplicate_successors_phi(i1 %c, i32 %x) {
22+
; CHECK-LABEL: @test_duplicate_successors_phi(
23+
; CHECK-NEXT: entry:
24+
; CHECK-NEXT: br i1 [[C:%.*]], label [[SWITCH:%.*]], label [[END:%.*]]
25+
; CHECK: switch:
26+
; CHECK-NEXT: switch i32 -1, label [[SWITCH_DEFAULT:%.*]] [
27+
; CHECK-NEXT: i32 0, label [[END]]
28+
; CHECK-NEXT: i32 1, label [[END]]
29+
; CHECK-NEXT: ]
30+
; CHECK: switch.default:
31+
; CHECK-NEXT: ret i32 -1
32+
; CHECK: end:
33+
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ [[X:%.*]], [[ENTRY:%.*]] ], [ 1, [[SWITCH]] ], [ 1, [[SWITCH]] ]
34+
; CHECK-NEXT: ret i32 [[PHI]]
35+
;
36+
entry:
37+
br i1 %c, label %switch, label %end
38+
39+
switch:
40+
switch i32 -1, label %switch.default [
41+
i32 0, label %end
42+
i32 1, label %end
43+
]
44+
45+
switch.default:
46+
ret i32 -1
47+
48+
end:
49+
%phi = phi i32 [ %x, %entry ], [ 1, %switch ], [ 1, %switch ]
50+
ret i32 %phi
51+
}
52+
2153
define i32 @test_local_range(i32 %x) {
2254
; CHECK-LABEL: @test_local_range(
2355
; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[X:%.*]], 3

0 commit comments

Comments
 (0)