Home | History | Annotate | Download | only in LowerSwitch
      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 }
     42