| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 | |
| ; RUN: opt -S -passes=dfa-jump-threading %s | FileCheck %s | |
| define i64 @multiple-phi-def() { | |
| ; CHECK-LABEL: define i64 @multiple-phi-def() { | |
| ; CHECK-NEXT: [[ENTRY:.*]]: | |
| ; CHECK-NEXT: br label %[[LBL_ENTRY:.*]] | |
| ; CHECK: [[LBL_ENTRY]]: | |
| ; CHECK-NEXT: [[PHI3:%.*]] = phi i16 [ 0, %[[ENTRY]] ], [ [[PHI1:%.*]], %[[CASE2:.*]] ] | |
| ; CHECK-NEXT: br i1 true, label %[[THEN:.*]], label %[[SWITCH_BB:.*]] | |
| ; CHECK: [[THEN]]: | |
| ; CHECK-NEXT: br label %[[CASE2]] | |
| ; CHECK: [[CASE2]]: | |
| ; CHECK-NEXT: [[PHI1]] = phi i16 [ 0, %[[THEN]] ], [ 0, %[[SWITCH_BB]] ] | |
| ; CHECK-NEXT: [[PHI2:%.*]] = phi i16 [ 1, %[[THEN]] ], [ 0, %[[SWITCH_BB]] ] | |
| ; CHECK-NEXT: br i1 true, label %[[SWITCH_BB]], label %[[LBL_ENTRY]] | |
| ; CHECK: [[SWITCH_BB]]: | |
| ; CHECK-NEXT: [[PHI_OF_SWITCH:%.*]] = phi i16 [ [[PHI3]], %[[LBL_ENTRY]] ], [ [[PHI2]], %[[CASE2]] ] | |
| ; CHECK-NEXT: switch i16 [[PHI_OF_SWITCH]], label %[[DEFAULT_BB:.*]] [ | |
| ; CHECK-NEXT: i16 1, label %[[CASE1:.*]] | |
| ; CHECK-NEXT: i16 2, label %[[CASE2]] | |
| ; CHECK-NEXT: ] | |
| ; CHECK: [[CASE1]]: | |
| ; CHECK-NEXT: ret i64 1 | |
| ; CHECK: [[DEFAULT_BB]]: | |
| ; CHECK-NEXT: ret i64 0 | |
| ; | |
| entry: | |
| br label %lbl_entry | |
| lbl_entry: ; preds = %case2, %entry | |
| %phi3 = phi i16 [ 0, %entry ], [ %phi1, %case2 ] | |
| br i1 true, label %then, label %switch_bb | |
| then: ; preds = %lbl_entry | |
| br label %case2 | |
| case2: ; preds = %switch_bb, %then | |
| %phi1 = phi i16 [ 0, %then ], [ 0, %switch_bb ] | |
| %phi2 = phi i16 [ 1, %then ], [ 0, %switch_bb ] | |
| br i1 true, label %switch_bb, label %lbl_entry | |
| switch_bb: ; preds = %case2, %lbl_entry | |
| %phi_of_switch = phi i16 [ %phi3, %lbl_entry ], [ %phi2, %case2 ] | |
| switch i16 %phi_of_switch, label %default_bb [ | |
| i16 1, label %case1 | |
| i16 2, label %case2 | |
| ] | |
| case1: ; preds = %switch_bb | |
| ret i64 1 | |
| default_bb: ; preds = %switch_bb | |
| ret i64 0 | |
| } |