0f737211f5985c2bcbdfcb23a1534696727709b0
[oota-llvm.git] / test / Transforms / LowerSwitch / 2014-06-11-SwitchDefaultUnreachableOpt.ll
1 ; RUN: opt < %s -lowerswitch -S | FileCheck %s
2 ; CHECK-NOT: {{.*}}icmp eq{{.*}}
3 ;
4 ;int foo(int a) {
5 ;
6 ;  switch (a) {
7 ;  case 0:
8 ;    return 10;
9 ;  case 1:
10 ;    return 3;
11 ;  default:
12 ;    __builtin_unreachable();
13 ;  }
14 ;
15 ;}
16
17 define i32 @foo(i32 %a) nounwind ssp uwtable {
18   %1 = alloca i32, align 4
19   %2 = alloca i32, align 4
20   store i32 %a, i32* %2, align 4
21   %3 = load i32* %2, align 4
22   switch i32 %3, label %6 [
23     i32 0, label %4
24     i32 1, label %5
25   ]
26
27 ; <label>:4 
28   store i32 10, i32* %1
29   br label %7
30
31 ; <label>:5
32   store i32 3, i32* %1
33   br label %7
34
35 ; <label>:6
36   unreachable
37
38 ; <label>:7
39   %8 = load i32* %1
40   ret i32 %8
41 }