@@ -1569,3 +1569,37 @@ bb3:
1569
1569
%6 = phi i1 [ %5 , %bb1 ], [ %4 , %bb2 ]
1570
1570
ret i1 %6
1571
1571
}
1572
+
1573
+ define i1 @test_icmp_ne_on_nsw (i8 %x ) {
1574
+ ; CHECK-LABEL: @test_icmp_ne_on_nsw(
1575
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp sle i8 [[X:%.*]], 0
1576
+ ; CHECK-NEXT: [[TMP2:%.*]] = icmp sge i8 [[X]], -1
1577
+ ; CHECK-NEXT: [[TMP3:%.*]] = and i1 [[TMP1]], [[TMP2]]
1578
+ ; CHECK-NEXT: br i1 [[TMP3]], label [[BB1:%.*]], label [[BB2:%.*]]
1579
+ ; CHECK: bb2:
1580
+ ; CHECK-NEXT: [[TMP4:%.*]] = tail call i1 @get_bool()
1581
+ ; CHECK-NEXT: br label [[BB3:%.*]]
1582
+ ; CHECK: bb1:
1583
+ ; CHECK-NEXT: [[TMP5:%.*]] = trunc i8 [[X]] to i1
1584
+ ; CHECK-NEXT: br label [[BB3]]
1585
+ ; CHECK: bb3:
1586
+ ; CHECK-NEXT: [[TMP6:%.*]] = phi i1 [ [[TMP5]], [[BB1]] ], [ [[TMP4]], [[BB2]] ]
1587
+ ; CHECK-NEXT: ret i1 [[TMP6]]
1588
+ ;
1589
+ %1 = icmp sle i8 %x , 0
1590
+ %2 = icmp sge i8 %x , -1
1591
+ %3 = and i1 %1 , %2
1592
+ br i1 %3 , label %bb1 , label %bb2
1593
+
1594
+ bb2:
1595
+ %4 = tail call i1 @get_bool ()
1596
+ br label %bb3
1597
+
1598
+ bb1:
1599
+ %5 = icmp eq i8 %x , -1
1600
+ br label %bb3
1601
+
1602
+ bb3:
1603
+ %6 = phi i1 [ %5 , %bb1 ], [ %4 , %bb2 ]
1604
+ ret i1 %6
1605
+ }
0 commit comments