blob: bfacf25ca7f74db469c7bbd44db06f6b05f56ceb [file] [log] [blame]
Benjamin Kramer62aa46b2011-02-03 22:51:41 +00001; RUN: opt -S -simplifycfg < %s | FileCheck %s
2
3define zeroext i1 @test1(i32 %x) nounwind readnone ssp noredzone {
4entry:
5 switch i32 %x, label %lor.rhs [
6 i32 2, label %lor.end
7 i32 1, label %lor.end
8 i32 3, label %lor.end
9 ]
10
11lor.rhs:
12 br label %lor.end
13
14lor.end:
15 %0 = phi i1 [ true, %entry ], [ false, %lor.rhs ], [ true, %entry ], [ true, %entry ]
16 ret i1 %0
17
Stephen Linc1c7a132013-07-14 01:42:54 +000018; CHECK-LABEL: @test1(
Benjamin Kramer8d6a8c12011-02-07 22:37:28 +000019; CHECK: %x.off = add i32 %x, -1
20; CHECK: %switch = icmp ult i32 %x.off, 3
Benjamin Kramer62aa46b2011-02-03 22:51:41 +000021}
22
23define zeroext i1 @test2(i32 %x) nounwind readnone ssp noredzone {
24entry:
25 switch i32 %x, label %lor.rhs [
26 i32 0, label %lor.end
27 i32 1, label %lor.end
28 ]
29
30lor.rhs:
31 br label %lor.end
32
33lor.end:
34 %0 = phi i1 [ true, %entry ], [ false, %lor.rhs ], [ true, %entry ]
35 ret i1 %0
36
Stephen Linc1c7a132013-07-14 01:42:54 +000037; CHECK-LABEL: @test2(
Benjamin Kramer8d6a8c12011-02-07 22:37:28 +000038; CHECK: %switch = icmp ult i32 %x, 2
Benjamin Kramer62aa46b2011-02-03 22:51:41 +000039}
Hans Wennborgc9e1d992013-04-16 08:35:36 +000040
41define i32 @test3(i1 %flag) {
42entry:
43 switch i1 %flag, label %bad [
44 i1 true, label %good
45 i1 false, label %good
46 ]
47
48good:
49 ret i32 0
50
51bad:
52 ret i32 1
53
Stephen Linc1c7a132013-07-14 01:42:54 +000054; CHECK-LABEL: @test3(
Hans Wennborgc9e1d992013-04-16 08:35:36 +000055; CHECK: entry:
56; CHECK-NEXT: ret i32 0
57}