1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -lowerswitch -S | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; The switch is lowered with a single icmp. 4*9880d681SAndroid Build Coastguard Worker; CHECK: icmp 5*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: icmp 6*9880d681SAndroid Build Coastguard Worker; 7*9880d681SAndroid Build Coastguard Worker;int foo(int a) { 8*9880d681SAndroid Build Coastguard Worker; 9*9880d681SAndroid Build Coastguard Worker; switch (a) { 10*9880d681SAndroid Build Coastguard Worker; case 0: 11*9880d681SAndroid Build Coastguard Worker; return 10; 12*9880d681SAndroid Build Coastguard Worker; case 1: 13*9880d681SAndroid Build Coastguard Worker; return 3; 14*9880d681SAndroid Build Coastguard Worker; default: 15*9880d681SAndroid Build Coastguard Worker; __builtin_unreachable(); 16*9880d681SAndroid Build Coastguard Worker; } 17*9880d681SAndroid Build Coastguard Worker; 18*9880d681SAndroid Build Coastguard Worker;} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine i32 @foo(i32 %a) { 21*9880d681SAndroid Build Coastguard Worker %1 = alloca i32, align 4 22*9880d681SAndroid Build Coastguard Worker %2 = alloca i32, align 4 23*9880d681SAndroid Build Coastguard Worker store i32 %a, i32* %2, align 4 24*9880d681SAndroid Build Coastguard Worker %3 = load i32, i32* %2, align 4 25*9880d681SAndroid Build Coastguard Worker switch i32 %3, label %6 [ 26*9880d681SAndroid Build Coastguard Worker i32 0, label %4 27*9880d681SAndroid Build Coastguard Worker i32 1, label %5 28*9880d681SAndroid Build Coastguard Worker ] 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker; <label>:4 31*9880d681SAndroid Build Coastguard Worker store i32 10, i32* %1 32*9880d681SAndroid Build Coastguard Worker br label %7 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker; <label>:5 35*9880d681SAndroid Build Coastguard Worker store i32 3, i32* %1 36*9880d681SAndroid Build Coastguard Worker br label %7 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker; <label>:6 39*9880d681SAndroid Build Coastguard Worker unreachable 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; <label>:7 42*9880d681SAndroid Build Coastguard Worker %8 = load i32, i32* %1 43*9880d681SAndroid Build Coastguard Worker ret i32 %8 44*9880d681SAndroid Build Coastguard Worker} 45