Skip to content

Commit 5ddd19a

Browse files
committed
Pre-commit test cases
1 parent 9bd03b4 commit 5ddd19a

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

llvm/test/Transforms/SimplifyCFG/ForwardSwitchConditionToPHI.ll

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,75 @@ return: ; preds = %entry, %sw.bb4, %sw
5959
ret i32 %retval.0
6060
}
6161

62+
define i32 @forward_one(i32 %m) {
63+
; NO_FWD-LABEL: @forward_one(
64+
; NO_FWD-NEXT: entry:
65+
; NO_FWD-NEXT: switch i32 [[M:%.*]], label [[SW_BB4:%.*]] [
66+
; NO_FWD-NEXT: i32 0, label [[RETURN:%.*]]
67+
; NO_FWD-NEXT: i32 1, label [[SW_BB1:%.*]]
68+
; NO_FWD-NEXT: i32 2, label [[SW_BB2:%.*]]
69+
; NO_FWD-NEXT: i32 3, label [[SW_BB3:%.*]]
70+
; NO_FWD-NEXT: ]
71+
; NO_FWD: sw.bb1:
72+
; NO_FWD-NEXT: br label [[RETURN]]
73+
; NO_FWD: sw.bb2:
74+
; NO_FWD-NEXT: br label [[RETURN]]
75+
; NO_FWD: sw.bb3:
76+
; NO_FWD-NEXT: br label [[RETURN]]
77+
; NO_FWD: sw.bb4:
78+
; NO_FWD-NEXT: br label [[RETURN]]
79+
; NO_FWD: return:
80+
; NO_FWD-NEXT: [[RETVAL_0:%.*]] = phi i32 [ 4, [[SW_BB4]] ], [ 5, [[SW_BB3]] ], [ 6, [[SW_BB2]] ], [ 1, [[SW_BB1]] ], [ 8, [[ENTRY:%.*]] ]
81+
; NO_FWD-NEXT: ret i32 [[RETVAL_0]]
82+
;
83+
; FWD-LABEL: @forward_one(
84+
; FWD-NEXT: entry:
85+
; FWD-NEXT: switch i32 [[M:%.*]], label [[SW_BB4:%.*]] [
86+
; FWD-NEXT: i32 0, label [[RETURN:%.*]]
87+
; FWD-NEXT: i32 1, label [[SW_BB1:%.*]]
88+
; FWD-NEXT: i32 2, label [[SW_BB2:%.*]]
89+
; FWD-NEXT: i32 3, label [[SW_BB3:%.*]]
90+
; FWD-NEXT: ]
91+
; FWD: sw.bb1:
92+
; FWD-NEXT: br label [[RETURN]]
93+
; FWD: sw.bb2:
94+
; FWD-NEXT: br label [[RETURN]]
95+
; FWD: sw.bb3:
96+
; FWD-NEXT: br label [[RETURN]]
97+
; FWD: sw.bb4:
98+
; FWD-NEXT: br label [[RETURN]]
99+
; FWD: return:
100+
; FWD-NEXT: [[RETVAL_0:%.*]] = phi i32 [ 4, [[SW_BB4]] ], [ 5, [[SW_BB3]] ], [ 6, [[SW_BB2]] ], [ 1, [[SW_BB1]] ], [ 8, [[ENTRY:%.*]] ]
101+
; FWD-NEXT: ret i32 [[RETVAL_0]]
102+
;
103+
entry:
104+
switch i32 %m, label %sw.bb4 [
105+
i32 0, label %sw.bb0
106+
i32 1, label %sw.bb1
107+
i32 2, label %sw.bb2
108+
i32 3, label %sw.bb3
109+
]
110+
111+
sw.bb0: ; preds = %entry
112+
br label %return
113+
114+
sw.bb1: ; preds = %entry
115+
br label %return
116+
117+
sw.bb2: ; preds = %entry
118+
br label %return
119+
120+
sw.bb3: ; preds = %entry
121+
br label %return
122+
123+
sw.bb4: ; preds = %entry
124+
br label %return
125+
126+
return: ; preds = %entry, %sw.bb4, %sw.bb3, %sw.bb2, %sw.bb1
127+
%retval.0 = phi i32 [ 4, %sw.bb4 ], [ 5, %sw.bb3 ], [ 6, %sw.bb2 ], [ 1, %sw.bb1 ], [ 8, %sw.bb0 ]
128+
ret i32 %retval.0
129+
}
130+
62131
; If 1 incoming phi value is a case constant of a switch, convert it to the switch condition:
63132
; https://bugs.llvm.org/show_bug.cgi?id=34471
64133
; This then subsequently should allow squashing of the other trivial case blocks.

0 commit comments

Comments
 (0)