@@ -88,12 +88,12 @@ L2: ; preds = %Loop
88
88
br label %Loop
89
89
}
90
90
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 (
93
93
; CHECK-NEXT: BB0:
94
94
; CHECK-NEXT: br label [[LOOP:%.*]]
95
95
; CHECK: Loop:
96
- ; CHECK-NEXT: br i1 [[B :%.*]], label [[LOOP]], label [[EXIT:%.*]]
96
+ ; CHECK-NEXT: br i1 [[COND :%.*]], label [[LOOP]], label [[EXIT:%.*]]
97
97
; CHECK: Exit:
98
98
; CHECK-NEXT: ret i32 [[A:%.*]]
99
99
;
@@ -103,7 +103,28 @@ BB0:
103
103
Loop: ; preds = %Loop, %BB0
104
104
; PHI has same value always.
105
105
%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
107
128
108
129
Exit: ; preds = %Loop
109
130
ret i32 %B
0 commit comments