Skip to content

Commit 5cc9347

Browse files
committed
[InstCombine] Add reduced test for PR 71330; NFC
1 parent 10a9e74 commit 5cc9347

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt -passes=instcombine -S < %s | FileCheck %s
3+
4+
define void @pr71330(i32 %conv, i1 %tobool19.not4, i16 %lb) {
5+
; CHECK-LABEL: define void @pr71330(
6+
; CHECK-SAME: i32 [[CONV:%.*]], i1 [[TOBOOL19_NOT4:%.*]], i16 [[LB:%.*]]) {
7+
; CHECK-NEXT: entry:
8+
; CHECK-NEXT: br label [[FOR_COND7_PREHEADER:%.*]]
9+
; CHECK: for.cond7.preheader:
10+
; CHECK-NEXT: br i1 [[TOBOOL19_NOT4]], label [[FOR_COND7_PREHEADER_SPLIT_US:%.*]], label [[FOR_COND7:%.*]]
11+
; CHECK: for.cond7.preheader.split.us:
12+
; CHECK-NEXT: br i1 true, label [[FOR_COND7_PREHEADER_SPLIT_US_SPLIT:%.*]], label [[FOR_COND7_US_US:%.*]]
13+
; CHECK: for.cond7.us.us:
14+
; CHECK-NEXT: br i1 poison, label [[FOR_COND7_US_US]], label [[FOR_END25:%.*]]
15+
; CHECK: for.cond7.preheader.split.us.split:
16+
; CHECK-NEXT: ret void
17+
; CHECK: for.cond7:
18+
; CHECK-NEXT: [[ADD9:%.*]] = add i32 [[CONV]], 3
19+
; CHECK-NEXT: [[CMP12:%.*]] = icmp slt i32 [[ADD9]], 0
20+
; CHECK-NEXT: br i1 [[CMP12]], label [[FOR_BODY14:%.*]], label [[FOR_END25]]
21+
; CHECK: for.body14:
22+
; CHECK-NEXT: ret void
23+
; CHECK: for.end25:
24+
; CHECK-NEXT: br i1 false, label [[FOR_COND7_PREHEADER]], label [[FOR_END36:%.*]]
25+
; CHECK: for.end36:
26+
; CHECK-NEXT: ret void
27+
;
28+
entry:
29+
br label %for.cond7.preheader
30+
31+
for.cond7.preheader: ; preds = %for.end25, %entry
32+
%storemerge33 = phi i32 [ -3, %entry ], [ 0, %for.end25 ]
33+
%sm8 = and i32 %storemerge33, 1
34+
%add = add i32 %storemerge33, 8
35+
%cmp.i.i.not = icmp eq i32 %sm8, 0
36+
%cmp3.i.i = icmp eq i32 %add, 0
37+
%and7.i.i = and i32 %storemerge33, 1
38+
%cmp8.i.i = icmp eq i32 %and7.i.i, 0
39+
%tobool.not.i.i = icmp eq i32 %add, 0
40+
%..i.i = select i1 %tobool.not.i.i, i32 1, i32 3
41+
br i1 %tobool19.not4, label %for.cond7.preheader.split.us, label %for.cond7
42+
43+
for.cond7.preheader.split.us: ; preds = %for.cond7.preheader
44+
br i1 %cmp.i.i.not, label %for.cond7.us.us, label %for.cond7.preheader.split.us.split
45+
46+
for.cond7.us.us: ; preds = %for.cond7.us.us, %for.cond7.preheader.split.us
47+
%spec.select = select i1 %cmp8.i.i, i32 1, i32 %..i.i
48+
%retval.0.i.i.us.us = select i1 %cmp3.i.i, i32 0, i32 %spec.select
49+
%add9.us.us = add i32 %retval.0.i.i.us.us, %conv
50+
%conv10.us.us = sext i32 %add9.us.us to i64
51+
%cmp12.us.us = icmp slt i64 %conv10.us.us, 0
52+
br i1 %cmp12.us.us, label %for.cond7.us.us, label %for.end25
53+
54+
for.cond7.preheader.split.us.split: ; preds = %for.cond7.preheader.split.us
55+
ret void
56+
57+
for.cond7: ; preds = %for.cond7.preheader
58+
%cmp.i.i.not.not = xor i1 %cmp.i.i.not, true
59+
%brmerge = select i1 %cmp.i.i.not.not, i1 true, i1 %cmp3.i.i
60+
%spec.select34 = select i1 %cmp8.i.i, i32 1, i32 %..i.i
61+
%retval.0.i.i = select i1 %brmerge, i32 0, i32 %spec.select34
62+
%add9 = add i32 %retval.0.i.i, %conv
63+
%conv10 = sext i32 %add9 to i64
64+
%cmp12 = icmp slt i64 %conv10, 0
65+
br i1 %cmp12, label %for.body14, label %for.end25
66+
67+
for.body14: ; preds = %for.cond7
68+
ret void
69+
70+
for.end25: ; preds = %for.cond7, %for.cond7.us.us
71+
%conv35 = zext i16 %lb to i32
72+
%cmp = icmp slt i32 %conv35, 0
73+
br i1 %cmp, label %for.cond7.preheader, label %for.end36
74+
75+
for.end36: ; preds = %for.end25
76+
ret void
77+
}

0 commit comments

Comments
 (0)