@@ -88,12 +88,12 @@ L2: ; preds = %Loop
8888 br label %Loop
8989}
9090
91- define i32 @test5 (i32 %A , i1 %b ) {
92- ; CHECK-LABEL: @test5 (
91+ define i32 @test5_undef (i32 %A , i1 %cond ) {
92+ ; CHECK-LABEL: @test5_undef (
9393; CHECK-NEXT: BB0:
9494; CHECK-NEXT: br label [[LOOP:%.*]]
9595; CHECK: Loop:
96- ; CHECK-NEXT: br i1 [[B :%.*]], label [[LOOP]], label [[EXIT:%.*]]
96+ ; CHECK-NEXT: br i1 [[COND :%.*]], label [[LOOP]], label [[EXIT:%.*]]
9797; CHECK: Exit:
9898; CHECK-NEXT: ret i32 [[A:%.*]]
9999;
@@ -103,7 +103,28 @@ BB0:
103103Loop: ; preds = %Loop, %BB0
104104 ; PHI has same value always.
105105 %B = phi i32 [ %A , %BB0 ], [ undef , %Loop ]
106- br i1 %b , label %Loop , label %Exit
106+ br i1 %cond , label %Loop , label %Exit
107+
108+ Exit: ; preds = %Loop
109+ ret i32 %B
110+ }
111+
112+ define i32 @test5_poison (i32 %A , i1 %cond ) {
113+ ; CHECK-LABEL: @test5_poison(
114+ ; CHECK-NEXT: BB0:
115+ ; CHECK-NEXT: br label [[LOOP:%.*]]
116+ ; CHECK: Loop:
117+ ; CHECK-NEXT: br i1 [[COND:%.*]], label [[LOOP]], label [[EXIT:%.*]]
118+ ; CHECK: Exit:
119+ ; CHECK-NEXT: ret i32 [[A:%.*]]
120+ ;
121+ BB0:
122+ br label %Loop
123+
124+ Loop: ; preds = %Loop, %BB0
125+ ; PHI has same value always.
126+ %B = phi i32 [ %A , %BB0 ], [ poison, %Loop ]
127+ br i1 %cond , label %Loop , label %Exit
107128
108129Exit: ; preds = %Loop
109130 ret i32 %B
0 commit comments