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