1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; There should be no phi nodes left. 3; RUN: opt -S -passes=jump-threading < %s | FileCheck %s 4 5declare i32 @f1() 6declare i32 @f2() 7declare void @f3() 8 9define i32 @test(i1 %cond) { 10; CHECK-LABEL: @test( 11; CHECK-NEXT: br i1 [[COND:%.*]], label [[MERGE:%.*]], label [[MERGE_THREAD:%.*]] 12; CHECK: Merge.thread: 13; CHECK-NEXT: [[V2:%.*]] = call i32 @f2() 14; CHECK-NEXT: br label [[T2:%.*]] 15; CHECK: Merge: 16; CHECK-NEXT: [[V1:%.*]] = call i32 @f1() 17; CHECK-NEXT: [[A:%.*]] = icmp ne i32 [[V1]], 42 18; CHECK-NEXT: br i1 [[A]], label [[T2]], label [[F2:%.*]] 19; CHECK: T2: 20; CHECK-NEXT: call void @f3() 21; CHECK-NEXT: ret i32 1 22; CHECK: F2: 23; CHECK-NEXT: ret i32 0 24; 25 br i1 %cond, label %T1, label %F1 26 27T1: 28 %v1 = call i32 @f1() 29 br label %Merge 30 31F1: 32 %v2 = call i32 @f2() 33 br label %Merge 34 35Merge: 36 %B = phi i32 [%v1, %T1], [12, %F1] 37 %A = icmp ne i32 %B, 42 38 br i1 %A, label %T2, label %F2 39 40T2: 41 call void @f3() 42 ret i32 1 43 44F2: 45 ret i32 0 46} 47