1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt %loadexampleirtransforms -passes=tut-simplifycfg -tut-simplifycfg-version=v1 -S < %s | FileCheck %s 3; RUN: opt %loadexampleirtransforms -passes=tut-simplifycfg -tut-simplifycfg-version=v2 -S < %s | FileCheck %s 4; RUN: opt %loadexampleirtransforms -passes=tut-simplifycfg -tut-simplifycfg-version=v3 -S < %s | FileCheck %s 5 6define i32 @phi_cond_branch_eliminated() { 7; CHECK-LABEL: @phi_cond_branch_eliminated( 8; CHECK-NEXT: entry: 9; CHECK-NEXT: ret i32 20 10; 11entry: 12 br i1 true, label %bb.2, label %bb.3 13 14bb.2: 15 br label %bb.3 16 17bb.3: 18 %ret = phi i32 [ 10, %entry ], [ 20, %bb.2 ] 19 ret i32 %ret 20} 21 22define i32 @phi_removed() { 23; CHECK-LABEL: @phi_removed( 24; CHECK-NEXT: entry: 25; CHECK-NEXT: br label [[BB_3:%.*]] 26; CHECK: bb.3: 27; CHECK-NEXT: ret i32 0 28; 29entry: 30 br i1 false, label %bb.2, label %bb.3 31 32bb.2: 33 %pv = phi i32 [ 10, %entry ] 34 br label %bb.3 35 36bb.3: 37 ret i32 0 38} 39 40define i32 @phi_in_dead_region() { 41; CHECK-LABEL: @phi_in_dead_region( 42; CHECK-NEXT: entry: 43; CHECK-NEXT: ret i32 1 44; 45entry: 46 ret i32 1 47 48bb.1: 49 br i1 true, label %bb.2, label %bb.3 50 51bb.2: 52 br label %bb.3 53 54bb.3: 55 %ret = phi i32 [ 10, %bb.1 ], [ 20, %bb.2 ] 56 ret i32 %ret 57} 58 59define i32 @phi_in_mergable_blocks() { 60; CHECK-LABEL: @phi_in_mergable_blocks( 61; CHECK-NEXT: entry: 62; CHECK-NEXT: ret i32 10 63; 64entry: 65 br label %bb.1 66 67bb.1: 68 %pv = phi i32 [ 10, %entry ] 69 ret i32 %pv 70} 71