1 ; RUN: opt -S -simplifycfg < %s | FileCheck %s 2 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 ] 10 11 lor.rhs: 12 br label %lor.end 13 14 lor.end: 15 %0 = phi i1 [ true, %entry ], [ false, %lor.rhs ], [ true, %entry ], [ true, %entry ] 16 ret i1 %0 17 18 ; CHECK-LABEL: @test1( 19 ; CHECK: %x.off = add i32 %x, -1 20 ; CHECK: %switch = icmp ult i32 %x.off, 3 21 } 22 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 ] 29 30 lor.rhs: 31 br label %lor.end 32 33 lor.end: 34 %0 = phi i1 [ true, %entry ], [ false, %lor.rhs ], [ true, %entry ] 35 ret i1 %0 36 37 ; CHECK-LABEL: @test2( 38 ; CHECK: %switch = icmp ult i32 %x, 2 39 } 40 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 ] 47 48 good: 49 ret i32 0 50 51 bad: 52 ret i32 1 53 54 ; CHECK-LABEL: @test3( 55 ; CHECK: entry: 56 ; CHECK-NEXT: ret i32 0 57 } 58