@@ -1436,6 +1436,48 @@ if.end:
14361436 ret i32 0
14371437}
14381438
1439+ define void @trunc_nuw_i1_dominating_icmp_ne_0 (i8 %x ) {
1440+ ; CHECK-LABEL: @trunc_nuw_i1_dominating_icmp_ne_0(
1441+ ; CHECK-NEXT: [[ICMP:%.*]] = icmp ne i8 [[X:%.*]], 0
1442+ ; CHECK-NEXT: br i1 [[ICMP]], label [[BB1:%.*]], label [[BB2:%.*]]
1443+ ; CHECK: bb1:
1444+ ; CHECK-NEXT: [[C1:%.*]] = trunc nuw i8 [[X]] to i1
1445+ ; CHECK-NEXT: call void @use(i1 [[C1]])
1446+ ; CHECK-NEXT: ret void
1447+ ; CHECK: bb2:
1448+ ; CHECK-NEXT: ret void
1449+ ;
1450+ %icmp = icmp ne i8 %x , 0
1451+ br i1 %icmp , label %bb1 , label %bb2
1452+ bb1:
1453+ %c1 = trunc nuw i8 %x to i1
1454+ call void @use (i1 %c1 )
1455+ ret void
1456+ bb2:
1457+ ret void
1458+ }
1459+
1460+ define void @neg_trunc_i1_dominating_icmp_ne_0 (i8 %x ) {
1461+ ; CHECK-LABEL: @neg_trunc_i1_dominating_icmp_ne_0(
1462+ ; CHECK-NEXT: [[ICMP:%.*]] = icmp ne i8 [[X:%.*]], 0
1463+ ; CHECK-NEXT: br i1 [[ICMP]], label [[BB1:%.*]], label [[BB2:%.*]]
1464+ ; CHECK: bb1:
1465+ ; CHECK-NEXT: [[C1:%.*]] = trunc i8 [[X]] to i1
1466+ ; CHECK-NEXT: call void @use(i1 [[C1]])
1467+ ; CHECK-NEXT: ret void
1468+ ; CHECK: bb2:
1469+ ; CHECK-NEXT: ret void
1470+ ;
1471+ %icmp = icmp ne i8 %x , 0
1472+ br i1 %icmp , label %bb1 , label %bb2
1473+ bb1:
1474+ %c1 = trunc i8 %x to i1
1475+ call void @use (i1 %c1 )
1476+ ret void
1477+ bb2:
1478+ ret void
1479+ }
1480+
14391481define i1 @ptr_icmp_data_layout () {
14401482; CHECK-LABEL: @ptr_icmp_data_layout(
14411483; CHECK-NEXT: ret i1 false
0 commit comments