[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / Transforms / LowerSwitch / 2014-06-11-SwitchDefaultUnreachableOpt.ll
blob2652a6cc5e090bc903a88306d9917232f2b3dde1
1 ; RUN: opt < %s -lowerswitch -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, i32* %2, align 4
24   %3 = load i32, i32* %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, i32* %1
32   br label %7
34 ; <label>:5
35   store i32 3, i32* %1
36   br label %7
38 ; <label>:6
39   unreachable
41 ; <label>:7
42   %8 = load i32, i32* %1
43   ret i32 %8