|  | ; RUN: opt < %s -lowerswitch -S | FileCheck %s | 
|  | ; | 
|  | ; The switch is lowered with a single icmp. | 
|  | ; CHECK: icmp | 
|  | ; CHECK-NOT: icmp | 
|  | ; | 
|  | ;int foo(int a) { | 
|  | ; | 
|  | ;  switch (a) { | 
|  | ;  case 0: | 
|  | ;    return 10; | 
|  | ;  case 1: | 
|  | ;    return 3; | 
|  | ;  default: | 
|  | ;    __builtin_unreachable(); | 
|  | ;  } | 
|  | ; | 
|  | ;} | 
|  |  | 
|  | define i32 @foo(i32 %a) { | 
|  | %1 = alloca i32, align 4 | 
|  | %2 = alloca i32, align 4 | 
|  | store i32 %a, i32* %2, align 4 | 
|  | %3 = load i32, i32* %2, align 4 | 
|  | switch i32 %3, label %6 [ | 
|  | i32 0, label %4 | 
|  | i32 1, label %5 | 
|  | ] | 
|  |  | 
|  | ; <label>:4 | 
|  | store i32 10, i32* %1 | 
|  | br label %7 | 
|  |  | 
|  | ; <label>:5 | 
|  | store i32 3, i32* %1 | 
|  | br label %7 | 
|  |  | 
|  | ; <label>:6 | 
|  | unreachable | 
|  |  | 
|  | ; <label>:7 | 
|  | %8 = load i32, i32* %1 | 
|  | ret i32 %8 | 
|  | } |