@@ -321,6 +321,66 @@ different:
321321 ret i1 %cmp3
322322}
323323
324+ define i1 @test6_phi1 (i1 %c , i32 %x , i32 %y ) {
325+ ; CHECK-LABEL: @test6_phi1(
326+ ; CHECK-NEXT: entry:
327+ ; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp ne i32 [[X:%.*]], [[Y:%.*]]
328+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]
329+ ; CHECK: bb1:
330+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X]], [[Y]]
331+ ; CHECK-NEXT: br i1 [[CMP]], label [[BB2]], label [[BB3:%.*]]
332+ ; CHECK: bb2:
333+ ; CHECK-NEXT: [[PHI:%.*]] = phi i1 [ false, [[BB1]] ], [ true, [[ENTRY:%.*]] ]
334+ ; CHECK-NEXT: ret i1 [[PHI]]
335+ ; CHECK: bb3:
336+ ; CHECK-NEXT: ret i1 false
337+ ;
338+ entry:
339+ %cmp.not = icmp ne i32 %x , %y
340+ br i1 %c , label %bb1 , label %bb2
341+
342+ bb1:
343+ %cmp = icmp eq i32 %x , %y
344+ br i1 %cmp , label %bb2 , label %bb3
345+
346+ bb2:
347+ %phi = phi i1 [ %cmp.not , %bb1 ], [ true , %entry ]
348+ ret i1 %phi
349+
350+ bb3:
351+ ret i1 false
352+ }
353+
354+ define i1 @test6_phi2 (i1 %c , i32 %x , i32 %y ) {
355+ ; CHECK-LABEL: @test6_phi2(
356+ ; CHECK-NEXT: entry:
357+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[BB1:%.*]], label [[BB2:%.*]]
358+ ; CHECK: bb1:
359+ ; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp ne i32 [[X:%.*]], [[Y:%.*]]
360+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X]], [[Y]]
361+ ; CHECK-NEXT: br i1 [[CMP]], label [[BB2]], label [[BB3:%.*]]
362+ ; CHECK: bb2:
363+ ; CHECK-NEXT: [[PHI:%.*]] = phi i1 [ [[CMP_NOT]], [[BB1]] ], [ true, [[ENTRY:%.*]] ]
364+ ; CHECK-NEXT: ret i1 [[PHI]]
365+ ; CHECK: bb3:
366+ ; CHECK-NEXT: ret i1 false
367+ ;
368+ entry:
369+ br i1 %c , label %bb1 , label %bb2
370+
371+ bb1:
372+ %cmp.not = icmp ne i32 %x , %y
373+ %cmp = icmp eq i32 %x , %y
374+ br i1 %cmp , label %bb2 , label %bb3
375+
376+ bb2:
377+ %phi = phi i1 [ %cmp.not , %bb1 ], [ true , %entry ]
378+ ret i1 %phi
379+
380+ bb3:
381+ ret i1 false
382+ }
383+
324384define i1 @test7 (i32 %x , i32 %y ) {
325385; CHECK-LABEL: @test7(
326386; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], [[Y:%.*]]
0 commit comments