1 ; RUN: opt %s -simplifycfg -S | FileCheck %s
5 define i32 @basic(i32 %x) {
7 ; CHECK: x.off = add i32 %x, -5
8 ; CHECK: %switch = icmp ult i32 %x.off, 3
9 ; CHECK: br i1 %switch, label %a, label %default
12 switch i32 %x, label %default [
18 %0 = call i32 @f(i32 0)
21 %1 = call i32 @f(i32 1)
26 define i32 @unreachable(i32 %x) {
27 ; CHECK-LABEL: @unreachable
28 ; CHECK: x.off = add i32 %x, -5
29 ; CHECK: %switch = icmp ult i32 %x.off, 3
30 ; CHECK: br i1 %switch, label %a, label %b
33 switch i32 %x, label %unreachable [
45 %0 = call i32 @f(i32 0)
48 %1 = call i32 @f(i32 1)
53 define i32 @unreachable2(i32 %x) {
54 ; CHECK-LABEL: @unreachable2
55 ; CHECK: x.off = add i32 %x, -5
56 ; CHECK: %switch = icmp ult i32 %x.off, 3
57 ; CHECK: br i1 %switch, label %a, label %b
60 ; Note: folding the most popular case destination into the default
61 ; would prevent switch-to-icmp here.
62 switch i32 %x, label %unreachable [
72 %0 = call i32 @f(i32 0)
75 %1 = call i32 @f(i32 1)