blob: ac9ba1825e8394a9f09a1658377c817695cbc514 [file] [log] [blame]
Dan Gohmanf17a25c2007-07-18 16:29:46 +00001; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis | \
2; RUN: not grep switch
3
4int %test1() { ; Test normal folding
5 switch uint 5, label %Default [
6 uint 0, label %Foo
7 uint 1, label %Bar
8 uint 2, label %Baz
9 uint 5, label %TheDest
10 ]
11Default:ret int -1
12Foo: ret int -2
13Bar: ret int -3
14Baz: ret int -4
15TheDest:ret int 1234
16}
17
18int %test2() { ; Test folding to default dest
19 switch uint 3, label %Default [
20 uint 0, label %Foo
21 uint 1, label %Bar
22 uint 2, label %Baz
23 uint 5, label %TheDest
24 ]
25Default:ret int 1234
26Foo: ret int -2
27Bar: ret int -5
28Baz: ret int -6
29TheDest:ret int -8
30}
31
32int %test3(bool %C) { ; Test folding all to same dest
33 br bool %C, label %Start, label %TheDest
34Start:
35 switch uint 3, label %TheDest [
36 uint 0, label %TheDest
37 uint 1, label %TheDest
38 uint 2, label %TheDest
39 uint 5, label %TheDest
40 ]
41TheDest: ret int 1234
42}
43
44int %test4(uint %C) { ; Test folding switch -> branch
45 switch uint %C, label %L1 [
46 uint 0, label %L2
47 ]
48L1: ret int 0
49L2: ret int 1
50}
51
52int %test5(uint %C) {
53 switch uint %C, label %L1 [ ; Can fold into a cond branch!
54 uint 0, label %L2
55 uint 123, label %L1
56 ]
57L1: ret int 0
58L2: ret int 1
59}
60
61