xref: /aosp_15_r20/external/llvm/test/Analysis/DependenceAnalysis/ExactRDIV.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -analyze -basicaa -da | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; ModuleID = 'ExactRDIV.bc'
4*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
5*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-apple-macosx10.6.0"
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i < 10; i++)
9*9880d681SAndroid Build Coastguard Worker;;    A[4*i + 10] = i;
10*9880d681SAndroid Build Coastguard Worker;;  for (long int j = 0; j < 10; j++)
11*9880d681SAndroid Build Coastguard Worker;;    *B++ = A[2*j + 1];
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdefine void @rdiv0(i32* %A, i32* %B) nounwind uwtable ssp {
14*9880d681SAndroid Build Coastguard Workerentry:
15*9880d681SAndroid Build Coastguard Worker  br label %for.body
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
18*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
19*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
20*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
21*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
22*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.body
25*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
26*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
27*9880d681SAndroid Build Coastguard Worker  %mul = shl nsw i64 %i.03, 2
28*9880d681SAndroid Build Coastguard Worker  %add = add nsw i64 %mul, 10
29*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
30*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
31*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %i.03, 1
32*9880d681SAndroid Build Coastguard Worker  %exitcond5 = icmp ne i64 %inc, 10
33*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond5, label %for.body, label %for.body4.preheader
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerfor.body4.preheader:                              ; preds = %for.body
36*9880d681SAndroid Build Coastguard Worker  br label %for.body4
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerfor.body4:                                        ; preds = %for.body4.preheader, %for.body4
39*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ %inc9, %for.body4 ], [ 0, %for.body4.preheader ]
40*9880d681SAndroid Build Coastguard Worker  %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
41*9880d681SAndroid Build Coastguard Worker  %mul5 = shl nsw i64 %j.02, 1
42*9880d681SAndroid Build Coastguard Worker  %add64 = or i64 %mul5, 1
43*9880d681SAndroid Build Coastguard Worker  %arrayidx7 = getelementptr inbounds i32, i32* %A, i64 %add64
44*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx7, align 4
45*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
46*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.01, align 4
47*9880d681SAndroid Build Coastguard Worker  %inc9 = add nsw i64 %j.02, 1
48*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc9, 10
49*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body4, label %for.end10
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workerfor.end10:                                        ; preds = %for.body4
52*9880d681SAndroid Build Coastguard Worker  ret void
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i < 5; i++)
57*9880d681SAndroid Build Coastguard Worker;;    A[11*i - 45] = i;
58*9880d681SAndroid Build Coastguard Worker;;  for (long int j = 0; j < 10; j++)
59*9880d681SAndroid Build Coastguard Worker;;    *B++ = A[j];
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdefine void @rdiv1(i32* %A, i32* %B) nounwind uwtable ssp {
62*9880d681SAndroid Build Coastguard Workerentry:
63*9880d681SAndroid Build Coastguard Worker  br label %for.body
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
66*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
67*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
68*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
69*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
70*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.body
73*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
74*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
75*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, 11
76*9880d681SAndroid Build Coastguard Worker  %sub = add nsw i64 %mul, -45
77*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
78*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
79*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %i.03, 1
80*9880d681SAndroid Build Coastguard Worker  %exitcond4 = icmp ne i64 %inc, 5
81*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond4, label %for.body, label %for.body4.preheader
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Workerfor.body4.preheader:                              ; preds = %for.body
84*9880d681SAndroid Build Coastguard Worker  br label %for.body4
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerfor.body4:                                        ; preds = %for.body4.preheader, %for.body4
87*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
88*9880d681SAndroid Build Coastguard Worker  %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
89*9880d681SAndroid Build Coastguard Worker  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %j.02
90*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx5, align 4
91*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
92*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.01, align 4
93*9880d681SAndroid Build Coastguard Worker  %inc7 = add nsw i64 %j.02, 1
94*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc7, 10
95*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body4, label %for.end8
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerfor.end8:                                         ; preds = %for.body4
98*9880d681SAndroid Build Coastguard Worker  ret void
99*9880d681SAndroid Build Coastguard Worker}
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i <= 5; i++)
103*9880d681SAndroid Build Coastguard Worker;;    A[11*i - 45] = i;
104*9880d681SAndroid Build Coastguard Worker;;  for (long int j = 0; j < 10; j++)
105*9880d681SAndroid Build Coastguard Worker;;    *B++ = A[j];
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Workerdefine void @rdiv2(i32* %A, i32* %B) nounwind uwtable ssp {
108*9880d681SAndroid Build Coastguard Workerentry:
109*9880d681SAndroid Build Coastguard Worker  br label %for.body
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
112*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
113*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
114*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
115*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
116*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.body
119*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
120*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
121*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, 11
122*9880d681SAndroid Build Coastguard Worker  %sub = add nsw i64 %mul, -45
123*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
124*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
125*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %i.03, 1
126*9880d681SAndroid Build Coastguard Worker  %exitcond4 = icmp ne i64 %inc, 6
127*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond4, label %for.body, label %for.body4.preheader
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Workerfor.body4.preheader:                              ; preds = %for.body
130*9880d681SAndroid Build Coastguard Worker  br label %for.body4
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Workerfor.body4:                                        ; preds = %for.body4.preheader, %for.body4
133*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
134*9880d681SAndroid Build Coastguard Worker  %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
135*9880d681SAndroid Build Coastguard Worker  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %j.02
136*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx5, align 4
137*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
138*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.01, align 4
139*9880d681SAndroid Build Coastguard Worker  %inc7 = add nsw i64 %j.02, 1
140*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc7, 10
141*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body4, label %for.end8
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Workerfor.end8:                                         ; preds = %for.body4
144*9880d681SAndroid Build Coastguard Worker  ret void
145*9880d681SAndroid Build Coastguard Worker}
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Worker
148*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i < 5; i++)
149*9880d681SAndroid Build Coastguard Worker;;    A[11*i - 45] = i;
150*9880d681SAndroid Build Coastguard Worker;;  for (long int j = 0; j <= 10; j++)
151*9880d681SAndroid Build Coastguard Worker;;    *B++ = A[j];
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Workerdefine void @rdiv3(i32* %A, i32* %B) nounwind uwtable ssp {
154*9880d681SAndroid Build Coastguard Workerentry:
155*9880d681SAndroid Build Coastguard Worker  br label %for.body
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
158*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
159*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
160*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
161*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
162*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
163*9880d681SAndroid Build Coastguard Worker
164*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.body
165*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
166*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
167*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, 11
168*9880d681SAndroid Build Coastguard Worker  %sub = add nsw i64 %mul, -45
169*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
170*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
171*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %i.03, 1
172*9880d681SAndroid Build Coastguard Worker  %exitcond4 = icmp ne i64 %inc, 5
173*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond4, label %for.body, label %for.body4.preheader
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerfor.body4.preheader:                              ; preds = %for.body
176*9880d681SAndroid Build Coastguard Worker  br label %for.body4
177*9880d681SAndroid Build Coastguard Worker
178*9880d681SAndroid Build Coastguard Workerfor.body4:                                        ; preds = %for.body4.preheader, %for.body4
179*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
180*9880d681SAndroid Build Coastguard Worker  %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
181*9880d681SAndroid Build Coastguard Worker  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %j.02
182*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx5, align 4
183*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
184*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.01, align 4
185*9880d681SAndroid Build Coastguard Worker  %inc7 = add nsw i64 %j.02, 1
186*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc7, 11
187*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body4, label %for.end8
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard Workerfor.end8:                                         ; preds = %for.body4
190*9880d681SAndroid Build Coastguard Worker  ret void
191*9880d681SAndroid Build Coastguard Worker}
192*9880d681SAndroid Build Coastguard Worker
193*9880d681SAndroid Build Coastguard Worker
194*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i <= 5; i++)
195*9880d681SAndroid Build Coastguard Worker;;    A[11*i - 45] = i;
196*9880d681SAndroid Build Coastguard Worker;;  for (long int j = 0; j <= 10; j++)
197*9880d681SAndroid Build Coastguard Worker;;    *B++ = A[j];
198*9880d681SAndroid Build Coastguard Worker
199*9880d681SAndroid Build Coastguard Workerdefine void @rdiv4(i32* %A, i32* %B) nounwind uwtable ssp {
200*9880d681SAndroid Build Coastguard Workerentry:
201*9880d681SAndroid Build Coastguard Worker  br label %for.body
202*9880d681SAndroid Build Coastguard Worker
203*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
204*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - flow [|<]!
205*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
206*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
207*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
208*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
209*9880d681SAndroid Build Coastguard Worker
210*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.body
211*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
212*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
213*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, 11
214*9880d681SAndroid Build Coastguard Worker  %sub = add nsw i64 %mul, -45
215*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
216*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
217*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %i.03, 1
218*9880d681SAndroid Build Coastguard Worker  %exitcond4 = icmp ne i64 %inc, 6
219*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond4, label %for.body, label %for.body4.preheader
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Workerfor.body4.preheader:                              ; preds = %for.body
222*9880d681SAndroid Build Coastguard Worker  br label %for.body4
223*9880d681SAndroid Build Coastguard Worker
224*9880d681SAndroid Build Coastguard Workerfor.body4:                                        ; preds = %for.body4.preheader, %for.body4
225*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
226*9880d681SAndroid Build Coastguard Worker  %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
227*9880d681SAndroid Build Coastguard Worker  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %j.02
228*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx5, align 4
229*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
230*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.01, align 4
231*9880d681SAndroid Build Coastguard Worker  %inc7 = add nsw i64 %j.02, 1
232*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc7, 11
233*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body4, label %for.end8
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Workerfor.end8:                                         ; preds = %for.body4
236*9880d681SAndroid Build Coastguard Worker  ret void
237*9880d681SAndroid Build Coastguard Worker}
238*9880d681SAndroid Build Coastguard Worker
239*9880d681SAndroid Build Coastguard Worker
240*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i < 5; i++)
241*9880d681SAndroid Build Coastguard Worker;;    A[-11*i + 45] = i;
242*9880d681SAndroid Build Coastguard Worker;;  for (long int j = 0; j < 10; j++)
243*9880d681SAndroid Build Coastguard Worker;;    *B++ = A[-j];
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Workerdefine void @rdiv5(i32* %A, i32* %B) nounwind uwtable ssp {
246*9880d681SAndroid Build Coastguard Workerentry:
247*9880d681SAndroid Build Coastguard Worker  br label %for.body
248*9880d681SAndroid Build Coastguard Worker
249*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
250*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
251*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
252*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
253*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
254*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
255*9880d681SAndroid Build Coastguard Worker
256*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.body
257*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
258*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
259*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, -11
260*9880d681SAndroid Build Coastguard Worker  %add = add nsw i64 %mul, 45
261*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
262*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
263*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %i.03, 1
264*9880d681SAndroid Build Coastguard Worker  %exitcond4 = icmp ne i64 %inc, 5
265*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond4, label %for.body, label %for.body4.preheader
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Workerfor.body4.preheader:                              ; preds = %for.body
268*9880d681SAndroid Build Coastguard Worker  br label %for.body4
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Workerfor.body4:                                        ; preds = %for.body4.preheader, %for.body4
271*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
272*9880d681SAndroid Build Coastguard Worker  %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
273*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i64 0, %j.02
274*9880d681SAndroid Build Coastguard Worker  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %sub
275*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx5, align 4
276*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
277*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.01, align 4
278*9880d681SAndroid Build Coastguard Worker  %inc7 = add nsw i64 %j.02, 1
279*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc7, 10
280*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body4, label %for.end8
281*9880d681SAndroid Build Coastguard Worker
282*9880d681SAndroid Build Coastguard Workerfor.end8:                                         ; preds = %for.body4
283*9880d681SAndroid Build Coastguard Worker  ret void
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Worker
287*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i <= 5; i++)
288*9880d681SAndroid Build Coastguard Worker;;    A[-11*i + 45] = i;
289*9880d681SAndroid Build Coastguard Worker;;  for (long int j = 0; j < 10; j++)
290*9880d681SAndroid Build Coastguard Worker;;    *B++ = A[-j];
291*9880d681SAndroid Build Coastguard Worker
292*9880d681SAndroid Build Coastguard Workerdefine void @rdiv6(i32* %A, i32* %B) nounwind uwtable ssp {
293*9880d681SAndroid Build Coastguard Workerentry:
294*9880d681SAndroid Build Coastguard Worker  br label %for.body
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
297*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
298*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
299*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
300*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
301*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
302*9880d681SAndroid Build Coastguard Worker
303*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.body
304*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
305*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
306*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, -11
307*9880d681SAndroid Build Coastguard Worker  %add = add nsw i64 %mul, 45
308*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
309*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
310*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %i.03, 1
311*9880d681SAndroid Build Coastguard Worker  %exitcond4 = icmp ne i64 %inc, 6
312*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond4, label %for.body, label %for.body4.preheader
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Workerfor.body4.preheader:                              ; preds = %for.body
315*9880d681SAndroid Build Coastguard Worker  br label %for.body4
316*9880d681SAndroid Build Coastguard Worker
317*9880d681SAndroid Build Coastguard Workerfor.body4:                                        ; preds = %for.body4.preheader, %for.body4
318*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
319*9880d681SAndroid Build Coastguard Worker  %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
320*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i64 0, %j.02
321*9880d681SAndroid Build Coastguard Worker  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %sub
322*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx5, align 4
323*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
324*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.01, align 4
325*9880d681SAndroid Build Coastguard Worker  %inc7 = add nsw i64 %j.02, 1
326*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc7, 10
327*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body4, label %for.end8
328*9880d681SAndroid Build Coastguard Worker
329*9880d681SAndroid Build Coastguard Workerfor.end8:                                         ; preds = %for.body4
330*9880d681SAndroid Build Coastguard Worker  ret void
331*9880d681SAndroid Build Coastguard Worker}
332*9880d681SAndroid Build Coastguard Worker
333*9880d681SAndroid Build Coastguard Worker
334*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i < 5; i++)
335*9880d681SAndroid Build Coastguard Worker;;    A[-11*i + 45] = i;
336*9880d681SAndroid Build Coastguard Worker;;  for (long int j = 0; j <= 10; j++)
337*9880d681SAndroid Build Coastguard Worker;;    *B++ = A[-j];
338*9880d681SAndroid Build Coastguard Worker
339*9880d681SAndroid Build Coastguard Workerdefine void @rdiv7(i32* %A, i32* %B) nounwind uwtable ssp {
340*9880d681SAndroid Build Coastguard Workerentry:
341*9880d681SAndroid Build Coastguard Worker  br label %for.body
342*9880d681SAndroid Build Coastguard Worker
343*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
344*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
345*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
346*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
347*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
348*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.body
351*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
352*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
353*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, -11
354*9880d681SAndroid Build Coastguard Worker  %add = add nsw i64 %mul, 45
355*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
356*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
357*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %i.03, 1
358*9880d681SAndroid Build Coastguard Worker  %exitcond4 = icmp ne i64 %inc, 5
359*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond4, label %for.body, label %for.body4.preheader
360*9880d681SAndroid Build Coastguard Worker
361*9880d681SAndroid Build Coastguard Workerfor.body4.preheader:                              ; preds = %for.body
362*9880d681SAndroid Build Coastguard Worker  br label %for.body4
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Workerfor.body4:                                        ; preds = %for.body4.preheader, %for.body4
365*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
366*9880d681SAndroid Build Coastguard Worker  %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
367*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i64 0, %j.02
368*9880d681SAndroid Build Coastguard Worker  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %sub
369*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx5, align 4
370*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
371*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.01, align 4
372*9880d681SAndroid Build Coastguard Worker  %inc7 = add nsw i64 %j.02, 1
373*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc7, 11
374*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body4, label %for.end8
375*9880d681SAndroid Build Coastguard Worker
376*9880d681SAndroid Build Coastguard Workerfor.end8:                                         ; preds = %for.body4
377*9880d681SAndroid Build Coastguard Worker  ret void
378*9880d681SAndroid Build Coastguard Worker}
379*9880d681SAndroid Build Coastguard Worker
380*9880d681SAndroid Build Coastguard Worker
381*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i <= 5; i++)
382*9880d681SAndroid Build Coastguard Worker;;    A[-11*i + 45] = i;
383*9880d681SAndroid Build Coastguard Worker;;  for (long int j = 0; j <= 10; j++)
384*9880d681SAndroid Build Coastguard Worker;;    *B++ = A[-j];
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard Workerdefine void @rdiv8(i32* %A, i32* %B) nounwind uwtable ssp {
387*9880d681SAndroid Build Coastguard Workerentry:
388*9880d681SAndroid Build Coastguard Worker  br label %for.body
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
391*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - flow [|<]!
392*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
393*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
394*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
395*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
396*9880d681SAndroid Build Coastguard Worker
397*9880d681SAndroid Build Coastguard Workerfor.body:                                         ; preds = %entry, %for.body
398*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
399*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
400*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, -11
401*9880d681SAndroid Build Coastguard Worker  %add = add nsw i64 %mul, 45
402*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
403*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
404*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %i.03, 1
405*9880d681SAndroid Build Coastguard Worker  %exitcond4 = icmp ne i64 %inc, 6
406*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond4, label %for.body, label %for.body4.preheader
407*9880d681SAndroid Build Coastguard Worker
408*9880d681SAndroid Build Coastguard Workerfor.body4.preheader:                              ; preds = %for.body
409*9880d681SAndroid Build Coastguard Worker  br label %for.body4
410*9880d681SAndroid Build Coastguard Worker
411*9880d681SAndroid Build Coastguard Workerfor.body4:                                        ; preds = %for.body4.preheader, %for.body4
412*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
413*9880d681SAndroid Build Coastguard Worker  %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
414*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i64 0, %j.02
415*9880d681SAndroid Build Coastguard Worker  %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %sub
416*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx5, align 4
417*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
418*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.01, align 4
419*9880d681SAndroid Build Coastguard Worker  %inc7 = add nsw i64 %j.02, 1
420*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc7, 11
421*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body4, label %for.end8
422*9880d681SAndroid Build Coastguard Worker
423*9880d681SAndroid Build Coastguard Workerfor.end8:                                         ; preds = %for.body4
424*9880d681SAndroid Build Coastguard Worker  ret void
425*9880d681SAndroid Build Coastguard Worker}
426*9880d681SAndroid Build Coastguard Worker
427*9880d681SAndroid Build Coastguard Worker
428*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i < 5; i++)
429*9880d681SAndroid Build Coastguard Worker;;    for (long int j = 0; j < 10; j++) {
430*9880d681SAndroid Build Coastguard Worker;;      A[11*i - j] = i;
431*9880d681SAndroid Build Coastguard Worker;;      *B++ = A[45];
432*9880d681SAndroid Build Coastguard Worker
433*9880d681SAndroid Build Coastguard Workerdefine void @rdiv9(i32* %A, i32* %B) nounwind uwtable ssp {
434*9880d681SAndroid Build Coastguard Workerentry:
435*9880d681SAndroid Build Coastguard Worker  br label %for.cond1.preheader
436*9880d681SAndroid Build Coastguard Worker
437*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
438*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
439*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
440*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - consistent input [S S]!
441*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
442*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
443*9880d681SAndroid Build Coastguard Worker
444*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader:                              ; preds = %entry, %for.inc5
445*9880d681SAndroid Build Coastguard Worker  %B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc5 ]
446*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
447*9880d681SAndroid Build Coastguard Worker  br label %for.body3
448*9880d681SAndroid Build Coastguard Worker
449*9880d681SAndroid Build Coastguard Workerfor.body3:                                        ; preds = %for.cond1.preheader, %for.body3
450*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
451*9880d681SAndroid Build Coastguard Worker  %B.addr.11 = phi i32* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
452*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
453*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, 11
454*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i64 %mul, %j.02
455*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
456*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
457*9880d681SAndroid Build Coastguard Worker  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 45
458*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx4, align 4
459*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.11, i64 1
460*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.11, align 4
461*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %j.02, 1
462*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc, 10
463*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body3, label %for.inc5
464*9880d681SAndroid Build Coastguard Worker
465*9880d681SAndroid Build Coastguard Workerfor.inc5:                                         ; preds = %for.body3
466*9880d681SAndroid Build Coastguard Worker  %scevgep = getelementptr i32, i32* %B.addr.04, i64 10
467*9880d681SAndroid Build Coastguard Worker  %inc6 = add nsw i64 %i.03, 1
468*9880d681SAndroid Build Coastguard Worker  %exitcond5 = icmp ne i64 %inc6, 5
469*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
470*9880d681SAndroid Build Coastguard Worker
471*9880d681SAndroid Build Coastguard Workerfor.end7:                                         ; preds = %for.inc5
472*9880d681SAndroid Build Coastguard Worker  ret void
473*9880d681SAndroid Build Coastguard Worker}
474*9880d681SAndroid Build Coastguard Worker
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Worker
477*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i <= 5; i++)
478*9880d681SAndroid Build Coastguard Worker;;    for (long int j = 0; j < 10; j++) {
479*9880d681SAndroid Build Coastguard Worker;;      A[11*i - j] = i;
480*9880d681SAndroid Build Coastguard Worker;;      *B++ = A[45];
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Workerdefine void @rdiv10(i32* %A, i32* %B) nounwind uwtable ssp {
483*9880d681SAndroid Build Coastguard Workerentry:
484*9880d681SAndroid Build Coastguard Worker  br label %for.cond1.preheader
485*9880d681SAndroid Build Coastguard Worker
486*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
487*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
488*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
489*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - consistent input [S S]!
490*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
491*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
492*9880d681SAndroid Build Coastguard Worker
493*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader:                              ; preds = %entry, %for.inc5
494*9880d681SAndroid Build Coastguard Worker  %B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc5 ]
495*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
496*9880d681SAndroid Build Coastguard Worker  br label %for.body3
497*9880d681SAndroid Build Coastguard Worker
498*9880d681SAndroid Build Coastguard Workerfor.body3:                                        ; preds = %for.cond1.preheader, %for.body3
499*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
500*9880d681SAndroid Build Coastguard Worker  %B.addr.11 = phi i32* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
501*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
502*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, 11
503*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i64 %mul, %j.02
504*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
505*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
506*9880d681SAndroid Build Coastguard Worker  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 45
507*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx4, align 4
508*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.11, i64 1
509*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.11, align 4
510*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %j.02, 1
511*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc, 10
512*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body3, label %for.inc5
513*9880d681SAndroid Build Coastguard Worker
514*9880d681SAndroid Build Coastguard Workerfor.inc5:                                         ; preds = %for.body3
515*9880d681SAndroid Build Coastguard Worker  %scevgep = getelementptr i32, i32* %B.addr.04, i64 10
516*9880d681SAndroid Build Coastguard Worker  %inc6 = add nsw i64 %i.03, 1
517*9880d681SAndroid Build Coastguard Worker  %exitcond5 = icmp ne i64 %inc6, 6
518*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
519*9880d681SAndroid Build Coastguard Worker
520*9880d681SAndroid Build Coastguard Workerfor.end7:                                         ; preds = %for.inc5
521*9880d681SAndroid Build Coastguard Worker  ret void
522*9880d681SAndroid Build Coastguard Worker}
523*9880d681SAndroid Build Coastguard Worker
524*9880d681SAndroid Build Coastguard Worker
525*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i < 5; i++)
526*9880d681SAndroid Build Coastguard Worker;;    for (long int j = 0; j <= 10; j++) {
527*9880d681SAndroid Build Coastguard Worker;;      A[11*i - j] = i;
528*9880d681SAndroid Build Coastguard Worker;;      *B++ = A[45];
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Workerdefine void @rdiv11(i32* %A, i32* %B) nounwind uwtable ssp {
531*9880d681SAndroid Build Coastguard Workerentry:
532*9880d681SAndroid Build Coastguard Worker  br label %for.cond1.preheader
533*9880d681SAndroid Build Coastguard Worker
534*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
535*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
536*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
537*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - consistent input [S S]!
538*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
539*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
540*9880d681SAndroid Build Coastguard Worker
541*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader:                              ; preds = %entry, %for.inc5
542*9880d681SAndroid Build Coastguard Worker  %B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc5 ]
543*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
544*9880d681SAndroid Build Coastguard Worker  br label %for.body3
545*9880d681SAndroid Build Coastguard Worker
546*9880d681SAndroid Build Coastguard Workerfor.body3:                                        ; preds = %for.cond1.preheader, %for.body3
547*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
548*9880d681SAndroid Build Coastguard Worker  %B.addr.11 = phi i32* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
549*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
550*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, 11
551*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i64 %mul, %j.02
552*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
553*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
554*9880d681SAndroid Build Coastguard Worker  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 45
555*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx4, align 4
556*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.11, i64 1
557*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.11, align 4
558*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %j.02, 1
559*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc, 11
560*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body3, label %for.inc5
561*9880d681SAndroid Build Coastguard Worker
562*9880d681SAndroid Build Coastguard Workerfor.inc5:                                         ; preds = %for.body3
563*9880d681SAndroid Build Coastguard Worker  %scevgep = getelementptr i32, i32* %B.addr.04, i64 11
564*9880d681SAndroid Build Coastguard Worker  %inc6 = add nsw i64 %i.03, 1
565*9880d681SAndroid Build Coastguard Worker  %exitcond5 = icmp ne i64 %inc6, 5
566*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Workerfor.end7:                                         ; preds = %for.inc5
569*9880d681SAndroid Build Coastguard Worker  ret void
570*9880d681SAndroid Build Coastguard Worker}
571*9880d681SAndroid Build Coastguard Worker
572*9880d681SAndroid Build Coastguard Worker
573*9880d681SAndroid Build Coastguard Worker;;  for (long int i = 0; i <= 5; i++)
574*9880d681SAndroid Build Coastguard Worker;;    for (long int j = 0; j <= 10; j++) {
575*9880d681SAndroid Build Coastguard Worker;;      A[11*i - j] = i;
576*9880d681SAndroid Build Coastguard Worker;;      *B++ = A[45];
577*9880d681SAndroid Build Coastguard Worker
578*9880d681SAndroid Build Coastguard Workerdefine void @rdiv12(i32* %A, i32* %B) nounwind uwtable ssp {
579*9880d681SAndroid Build Coastguard Workerentry:
580*9880d681SAndroid Build Coastguard Worker  br label %for.cond1.preheader
581*9880d681SAndroid Build Coastguard Worker
582*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
583*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - flow [* *|<]!
584*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
585*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - consistent input [S S]!
586*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
587*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none!
588*9880d681SAndroid Build Coastguard Worker
589*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader:                              ; preds = %entry, %for.inc5
590*9880d681SAndroid Build Coastguard Worker  %B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc5 ]
591*9880d681SAndroid Build Coastguard Worker  %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
592*9880d681SAndroid Build Coastguard Worker  br label %for.body3
593*9880d681SAndroid Build Coastguard Worker
594*9880d681SAndroid Build Coastguard Workerfor.body3:                                        ; preds = %for.cond1.preheader, %for.body3
595*9880d681SAndroid Build Coastguard Worker  %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
596*9880d681SAndroid Build Coastguard Worker  %B.addr.11 = phi i32* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
597*9880d681SAndroid Build Coastguard Worker  %conv = trunc i64 %i.03 to i32
598*9880d681SAndroid Build Coastguard Worker  %mul = mul nsw i64 %i.03, 11
599*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i64 %mul, %j.02
600*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
601*9880d681SAndroid Build Coastguard Worker  store i32 %conv, i32* %arrayidx, align 4
602*9880d681SAndroid Build Coastguard Worker  %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 45
603*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %arrayidx4, align 4
604*9880d681SAndroid Build Coastguard Worker  %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.11, i64 1
605*9880d681SAndroid Build Coastguard Worker  store i32 %0, i32* %B.addr.11, align 4
606*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i64 %j.02, 1
607*9880d681SAndroid Build Coastguard Worker  %exitcond = icmp ne i64 %inc, 11
608*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond, label %for.body3, label %for.inc5
609*9880d681SAndroid Build Coastguard Worker
610*9880d681SAndroid Build Coastguard Workerfor.inc5:                                         ; preds = %for.body3
611*9880d681SAndroid Build Coastguard Worker  %scevgep = getelementptr i32, i32* %B.addr.04, i64 11
612*9880d681SAndroid Build Coastguard Worker  %inc6 = add nsw i64 %i.03, 1
613*9880d681SAndroid Build Coastguard Worker  %exitcond5 = icmp ne i64 %inc6, 6
614*9880d681SAndroid Build Coastguard Worker  br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
615*9880d681SAndroid Build Coastguard Worker
616*9880d681SAndroid Build Coastguard Workerfor.end7:                                         ; preds = %for.inc5
617*9880d681SAndroid Build Coastguard Worker  ret void
618*9880d681SAndroid Build Coastguard Worker}
619