Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / LowerSwitch / 2014-06-11-SwitchDefaultUnreachableOpt.ll
blob118f0ff5c19df9e7dd48e4c076921aea1e33150b
1 ; RUN: opt < %s -passes=lower-switch -S | FileCheck %s
3 ; The switch is lowered with a single icmp.
4 ; CHECK: icmp
5 ; CHECK-NOT: icmp
7 ;int foo(int a) {
9 ;  switch (a) {
10 ;  case 0:
11 ;    return 10;
12 ;  case 1:
13 ;    return 3;
14 ;  default:
15 ;    __builtin_unreachable();
16 ;  }
20 define i32 @foo(i32 %a) {
21   %1 = alloca i32, align 4
22   %2 = alloca i32, align 4
23   store i32 %a, ptr %2, align 4
24   %3 = load i32, ptr %2, align 4
25   switch i32 %3, label %6 [
26     i32 0, label %4
27     i32 1, label %5
28   ]
30 ; <label>:4 
31   store i32 10, ptr %1
32   br label %7
34 ; <label>:5
35   store i32 3, ptr %1
36   br label %7
38 ; <label>:6
39   unreachable
41 ; <label>:7
42   %8 = load i32, ptr %1
43   ret i32 %8