1// RUN: llgo -S -emit-llvm -o - %s | FileCheck %s 2 3package foo 4 5// CHECK: switch i32 6// CHECK-NEXT: i32 0, label %[[L0:.*]] 7// CHECK-NEXT: i32 1, label %[[L1:.*]] 8// CHECK-NEXT: i32 2, label %[[L2:.*]] 9// CHECK-NEXT: ] 10// CHECK: [[L0]]: 11// CHECK-NEXT: ret i32 1 12// CHECK: [[L1]]: 13// CHECK-NEXT: ret i32 2 14// CHECK: [[L2]]: 15// CHECK-NEXT: ret i32 0 16func F1(x int32) int32 { 17 switch x { 18 case 0: 19 return 1 20 case 1: 21 return 2 22 case 2: 23 return 0 24 } 25 panic("unreachable") 26} 27 28// CHECK: switch i64 29// CHECK-NEXT: i64 0 30// CHECK-NEXT: ] 31// CHECK: icmp eq i64 {{.*}}, 1 32func F2(x int64) bool { 33 return x == 0 || x == 0 || x == 1 34} 35 36// CHECK: switch i64 37// CHECK-NEXT: i64 0 38// CHECK-NEXT: ] 39func F3(x int64) bool { 40 return x == 0 || x == 0 || x == 0 41} 42 43// CHECK: switch i64 44// CHECK-NEXT: i64 0 45// CHECK-NEXT: i64 1 46// CHECK-NEXT: i64 2 47// CHECK-NEXT: ] 48// CHECK: icmp eq i64 {{.*}}, 3 49func F4(x int64) bool { 50 return x == 0 || x == 1 || x == 2 || x == 3 51} 52 53// CHECK-NOT: switch double 54func F5(x float64) float64 { 55 switch x { 56 case 0: 57 return 1.0 58 case 1.0: 59 return 0 60 } 61 panic("unreachable") 62} 63