blob: 2652a6cc5e090bc903a88306d9917232f2b3dde1 [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
David Blaikiea79ac142015-02-27 21:17:42 +000024 %3 = load i32, i32* %2, align 4
Jim Grosbachfff56632014-06-16 16:55:20 +000025 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
David Blaikiea79ac142015-02-27 21:17:42 +000042 %8 = load i32, i32* %1
Jim Grosbachfff56632014-06-16 16:55:20 +000043 ret i32 %8
44}