Skip to content

Commit cbcff3d

Browse files
[SimplifyCFG] Precommit test (NFC)
1 parent 1428624 commit cbcff3d

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2+
; RUN: opt -passes='simplifycfg<switch-to-lookup>' -simplifycfg-require-and-preserve-domtree=1 -S < %s | FileCheck %s
3+
4+
target triple = "x86_64-unknown-linux-gnu"
5+
6+
define i32 @switch_of_powers_two(i32 %arg) {
7+
; CHECK-LABEL: @switch_of_powers_two(
8+
; CHECK-NEXT: entry:
9+
; CHECK-NEXT: switch i32 [[ARG:%.*]], label [[DEFAULT_CASE:%.*]] [
10+
; CHECK-NEXT: i32 1, label [[RETURN:%.*]]
11+
; CHECK-NEXT: i32 8, label [[BB2:%.*]]
12+
; CHECK-NEXT: i32 16, label [[BB3:%.*]]
13+
; CHECK-NEXT: i32 32, label [[BB4:%.*]]
14+
; CHECK-NEXT: i32 64, label [[BB5:%.*]]
15+
; CHECK-NEXT: ]
16+
; CHECK: default_case:
17+
; CHECK-NEXT: unreachable
18+
; CHECK: bb2:
19+
; CHECK-NEXT: br label [[RETURN]]
20+
; CHECK: bb3:
21+
; CHECK-NEXT: br label [[RETURN]]
22+
; CHECK: bb4:
23+
; CHECK-NEXT: br label [[RETURN]]
24+
; CHECK: bb5:
25+
; CHECK-NEXT: br label [[RETURN]]
26+
; CHECK: return:
27+
; CHECK-NEXT: [[SWITCH_LOAD:%.*]] = phi i32 [ 2, [[BB2]] ], [ 1, [[BB3]] ], [ 0, [[BB4]] ], [ 42, [[BB5]] ], [ 3, [[ENTRY:%.*]] ]
28+
; CHECK-NEXT: ret i32 [[SWITCH_LOAD]]
29+
;
30+
entry:
31+
switch i32 %arg, label %default_case [
32+
i32 1, label %bb1
33+
i32 8, label %bb2
34+
i32 16, label %bb3
35+
i32 32, label %bb4
36+
i32 64, label %bb5
37+
]
38+
39+
40+
default_case: unreachable
41+
bb1: br label %return
42+
bb2: br label %return
43+
bb3: br label %return
44+
bb4: br label %return
45+
bb5: br label %return
46+
47+
return:
48+
%phi = phi i32 [ 3, %bb1 ], [ 2, %bb2 ], [ 1, %bb3 ], [ 0, %bb4 ], [ 42, %bb5 ]
49+
ret i32 %phi
50+
}

0 commit comments

Comments
 (0)