Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / SimplifyCFG / switch-to-icmp.ll
blob1bc3c74fae72a5c847a42c13c95bef9e0d0538ad
1 ; RUN: opt -S -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-range-to-icmp < %s | FileCheck %s
3 define zeroext i1 @test1(i32 %x) nounwind readnone ssp noredzone {
4 entry:
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  ]
11 lor.rhs:
12  br label %lor.end
14 lor.end:
15  %0 = phi i1 [ true, %entry ], [ false, %lor.rhs ], [ true, %entry ], [ true, %entry ]
16  ret i1 %0
18 ; CHECK-LABEL: @test1(
19 ; CHECK: %x.off = add i32 %x, -1
20 ; CHECK: %switch = icmp ult i32 %x.off, 3
23 define zeroext i1 @test2(i32 %x) nounwind readnone ssp noredzone {
24 entry:
25  switch i32 %x, label %lor.rhs [
26    i32 0, label %lor.end
27    i32 1, label %lor.end
28  ]
30 lor.rhs:
31  br label %lor.end
33 lor.end:
34  %0 = phi i1 [ true, %entry ], [ false, %lor.rhs ], [ true, %entry ]
35  ret i1 %0
37 ; CHECK-LABEL: @test2(
38 ; CHECK: %switch = icmp ult i32 %x, 2
41 define i32 @test3(i1 %flag) {
42 entry:
43  switch i1 %flag, label %bad [
44    i1 true, label %good
45    i1 false, label %good
46  ]
48 good:
49  ret i32 0
51 bad:
52  ret i32 1
54 ; CHECK-LABEL: @test3(
55 ; CHECK: entry:
56 ; CHECK-NEXT: ret i32 0