1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -jump-threading -mem2reg -instcombine -simplifycfg -S | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare i32 @f1() 4*9880d681SAndroid Build Coastguard Workerdeclare i32 @f2() 5*9880d681SAndroid Build Coastguard Workerdeclare void @f3() 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine i32 @test(i1 %cond, i1 %cond2, i1 %cond3) { 8*9880d681SAndroid Build Coastguard Worker; CHECK: test 9*9880d681SAndroid Build Coastguard Worker br i1 %cond, label %T1, label %F1 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: T1: 12*9880d681SAndroid Build Coastguard WorkerT1: 13*9880d681SAndroid Build Coastguard Worker %v1 = call i32 @f1() 14*9880d681SAndroid Build Coastguard Worker br label %Merge 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard WorkerF1: 17*9880d681SAndroid Build Coastguard Worker %v2 = call i32 @f2() 18*9880d681SAndroid Build Coastguard Worker br label %Merge 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard WorkerMerge: 21*9880d681SAndroid Build Coastguard Worker; CHECK: Merge: 22*9880d681SAndroid Build Coastguard Worker; CHECK: %v1 = call i32 @f1() 23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %D = and i1 %cond2, %cond3 24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br i1 %D 25*9880d681SAndroid Build Coastguard Worker %A = phi i1 [true, %T1], [false, %F1] 26*9880d681SAndroid Build Coastguard Worker %B = phi i32 [%v1, %T1], [%v2, %F1] 27*9880d681SAndroid Build Coastguard Worker %C = and i1 %A, %cond2 28*9880d681SAndroid Build Coastguard Worker %D = and i1 %C, %cond3 29*9880d681SAndroid Build Coastguard Worker br i1 %D, label %T2, label %F2 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard WorkerT2: 32*9880d681SAndroid Build Coastguard Worker call void @f3() 33*9880d681SAndroid Build Coastguard Worker ret i32 %B 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard WorkerF2: 36*9880d681SAndroid Build Coastguard Worker ret i32 %B 37*9880d681SAndroid Build Coastguard Worker} 38