blob: ecdd767bdeaeb275b3f9f64210d0e104361ebe45 [file] [log] [blame]
Jim Grosbachfff56632014-06-16 16:55:20 +00001; RUN: opt < %s -lowerswitch -S | FileCheck %s
Hans Wennborgae9c9712015-01-23 20:43:51 +00002;
3; The switch is lowered with a single icmp.
4; CHECK: icmp
5; CHECK-NOT: icmp
Jim Grosbachfff56632014-06-16 16:55:20 +00006;
7;int foo(int a) {
8;
9; switch (a) {
10; case 0:
11; return 10;
12; case 1:
13; return 3;
14; default:
15; __builtin_unreachable();
16; }
17;
18;}
19
Hans Wennborgae9c9712015-01-23 20:43:51 +000020define i32 @foo(i32 %a) {
Jim Grosbachfff56632014-06-16 16:55:20 +000021 %1 = alloca i32, align 4
22 %2 = alloca i32, align 4
23 store i32 %a, i32* %2, align 4
24 %3 = load i32* %2, align 4
25 switch i32 %3, label %6 [
26 i32 0, label %4
27 i32 1, label %5
28 ]
29
30; <label>:4
31 store i32 10, i32* %1
32 br label %7
33
34; <label>:5
35 store i32 3, i32* %1
36 br label %7
37
38; <label>:6
39 unreachable
40
41; <label>:7
42 %8 = load i32* %1
43 ret i32 %8
44}