Home | History | Annotate | Download | only in SimplifyCFG
      1 ; RUN: opt %s -simplifycfg -S | FileCheck %s
      2 
      3 declare i32 @f(i32)
      4 
      5 define i32 @basic(i32 %x) {
      6 ; CHECK-LABEL: @basic
      7 ; CHECK-LABEL: entry:
      8 ; CHECK-NEXT:  call i32 @f(i32 0)
      9 ; CHECK-NEXT:  ret i32 %0
     10 
     11 entry:
     12   switch i32 %x, label %default [
     13     i32 5, label %default
     14     i32 6, label %default
     15     i32 7, label %default
     16   ]
     17 default:
     18   %0 = call i32 @f(i32 0)
     19   ret i32 %0
     20 }
     21 
     22 
     23 define i32 @constant() {
     24 ; CHECK-LABEL: @constant
     25 ; CHECK-LABEL: entry:
     26 ; CHECK-NEXT:  call i32 @f(i32 1)
     27 ; CHECK-NEXT:  ret i32 %0
     28 
     29 entry:
     30   switch i32 42, label %default [
     31     i32 41, label %default
     32     i32 42, label %a
     33     i32 43, label %b
     34   ]
     35 default:
     36   %0 = call i32 @f(i32 0)
     37   ret i32 %0
     38 a:
     39   %1 = call i32 @f(i32 1)
     40   ret i32 %1
     41 b:
     42   %2 = call i32 @f(i32 2)
     43   ret i32 %2
     44 }
     45 
     46 
     47 define i32 @unreachable(i32 %x) {
     48 ; CHECK-LABEL: @unreachable
     49 ; CHECK-LABEL: entry:
     50 ; CHECK-NEXT:  call i32 @f(i32 0)
     51 ; CHECK-NEXT:  ret i32 %0
     52 
     53 entry:
     54   switch i32 %x, label %unreachable [
     55     i32 5, label %a
     56     i32 6, label %a
     57     i32 7, label %a
     58   ]
     59 unreachable:
     60   unreachable
     61 a:
     62   %0 = call i32 @f(i32 0)
     63   ret i32 %0
     64 }
     65