~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/test/Analysis/ScalarEvolution/trip-count9.ll

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-03-12 11:30:04 UTC
  • mfrom: (0.41.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100312113004-b0fop4bkycszdd0z
Tags: 0.96~rc1+dfsg-0ubuntu1
* New upstream RC - FFE (LP: #537636):
  - Add OfficialDatabaseOnly option to clamav-base.postinst.in
  - Add LocalSocketGroup option to clamav-base.postinst.in
  - Add LocalSocketMode option to clamav-base.postinst.in
  - Add CrossFilesystems option to clamav-base.postinst.in
  - Add ClamukoScannerCount option to clamav-base.postinst.in
  - Add BytecodeSecurity opiton to clamav-base.postinst.in
  - Add DetectionStatsHostID option to clamav-freshclam.postinst.in
  - Add Bytecode option to clamav-freshclam.postinst.in
  - Add MilterSocketGroup option to clamav-milter.postinst.in
  - Add MilterSocketMode option to clamav-milter.postinst.in
  - Add ReportHostname option to clamav-milter.postinst.in
  - Bump libclamav SO version to 6.1.0 in libclamav6.install
  - Drop clamdmon from clamav.examples (no longer shipped by upstream)
  - Drop libclamav.a from libclamav-dev.install (not built by upstream)
  - Update SO version for lintian override for libclamav6
  - Add new Bytecode Testing Tool, usr/bin/clambc, to clamav.install
  - Add build-depends on python and python-setuptools for new test suite
  - Update debian/copyright for the embedded copy of llvm (using the system
    llvm is not currently feasible)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: opt -analyze -scalar-evolution -S < %s | FileCheck %s
 
2
 
 
3
; Every combination of
 
4
;  - starting at 0, 1, or %x
 
5
;  - steping by 1 or 2
 
6
;  - stopping at %n or %n*2
 
7
;  - using nsw, or not
 
8
 
 
9
; Some of these represent missed opportunities.
 
10
 
 
11
; CHECK: Determining loop execution counts for: @foo
 
12
; CHECK: Loop %loop: backedge-taken count is (-1 + %n)
 
13
; CHECK: Loop %loop: max backedge-taken count is 6
 
14
define void @foo(i4 %n) {
 
15
entry:
 
16
  %s = icmp sgt i4 %n, 0
 
17
  br i1 %s, label %loop, label %exit
 
18
loop:
 
19
  %i = phi i4 [ 0, %entry ], [ %i.next, %loop ]
 
20
  %i.next = add i4 %i, 1
 
21
  %t = icmp slt i4 %i.next, %n
 
22
  br i1 %t, label %loop, label %exit
 
23
exit:
 
24
  ret void
 
25
}
 
26
 
 
27
; CHECK: Determining loop execution counts for: @step2
 
28
; CHECK: Loop %loop: Unpredictable backedge-taken count. 
 
29
; CHECK: Loop %loop: Unpredictable max backedge-taken count. 
 
30
define void @step2(i4 %n) {
 
31
entry:
 
32
  %s = icmp sgt i4 %n, 0
 
33
  br i1 %s, label %loop, label %exit
 
34
loop:
 
35
  %i = phi i4 [ 0, %entry ], [ %i.next, %loop ]
 
36
  %i.next = add i4 %i, 2
 
37
  %t = icmp slt i4 %i.next, %n
 
38
  br i1 %t, label %loop, label %exit
 
39
exit:
 
40
  ret void
 
41
}
 
42
 
 
43
; CHECK: Determining loop execution counts for: @start1
 
44
; CHECK: Loop %loop: backedge-taken count is (-2 + (2 smax %n))
 
45
; CHECK: Loop %loop: max backedge-taken count is 5
 
46
define void @start1(i4 %n) {
 
47
entry:
 
48
  %s = icmp sgt i4 %n, 0
 
49
  br i1 %s, label %loop, label %exit
 
50
loop:
 
51
  %i = phi i4 [ 1, %entry ], [ %i.next, %loop ]
 
52
  %i.next = add i4 %i, 1
 
53
  %t = icmp slt i4 %i.next, %n
 
54
  br i1 %t, label %loop, label %exit
 
55
exit:
 
56
  ret void
 
57
}
 
58
 
 
59
; CHECK: Determining loop execution counts for: @start1_step2
 
60
; CHECK: Loop %loop: Unpredictable backedge-taken count. 
 
61
; CHECK: Loop %loop: Unpredictable max backedge-taken count. 
 
62
define void @start1_step2(i4 %n) {
 
63
entry:
 
64
  %s = icmp sgt i4 %n, 0
 
65
  br i1 %s, label %loop, label %exit
 
66
loop:
 
67
  %i = phi i4 [ 1, %entry ], [ %i.next, %loop ]
 
68
  %i.next = add i4 %i, 2
 
69
  %t = icmp slt i4 %i.next, %n
 
70
  br i1 %t, label %loop, label %exit
 
71
exit:
 
72
  ret void
 
73
}
 
74
 
 
75
; CHECK: Determining loop execution counts for: @startx
 
76
; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
 
77
; CHECK: Loop %loop: max backedge-taken count is -1
 
78
define void @startx(i4 %n, i4 %x) {
 
79
entry:
 
80
  %s = icmp sgt i4 %n, 0
 
81
  br i1 %s, label %loop, label %exit
 
82
loop:
 
83
  %i = phi i4 [ %x, %entry ], [ %i.next, %loop ]
 
84
  %i.next = add i4 %i, 1
 
85
  %t = icmp slt i4 %i.next, %n
 
86
  br i1 %t, label %loop, label %exit
 
87
exit:
 
88
  ret void
 
89
}
 
90
 
 
91
; CHECK: Determining loop execution counts for: @startx_step2
 
92
; CHECK: Loop %loop: Unpredictable backedge-taken count. 
 
93
; CHECK: Loop %loop: Unpredictable max backedge-taken count. 
 
94
define void @startx_step2(i4 %n, i4 %x) {
 
95
entry:
 
96
  %s = icmp sgt i4 %n, 0
 
97
  br i1 %s, label %loop, label %exit
 
98
loop:
 
99
  %i = phi i4 [ %x, %entry ], [ %i.next, %loop ]
 
100
  %i.next = add i4 %i, 2
 
101
  %t = icmp slt i4 %i.next, %n
 
102
  br i1 %t, label %loop, label %exit
 
103
exit:
 
104
  ret void
 
105
}
 
106
 
 
107
; CHECK: Determining loop execution counts for: @nsw
 
108
; CHECK: Loop %loop: backedge-taken count is (-1 + %n)
 
109
; CHECK: Loop %loop: max backedge-taken count is 6
 
110
define void @nsw(i4 %n) {
 
111
entry:
 
112
  %s = icmp sgt i4 %n, 0
 
113
  br i1 %s, label %loop, label %exit
 
114
loop:
 
115
  %i = phi i4 [ 0, %entry ], [ %i.next, %loop ]
 
116
  %i.next = add nsw i4 %i, 1
 
117
  %t = icmp slt i4 %i.next, %n
 
118
  br i1 %t, label %loop, label %exit
 
119
exit:
 
120
  ret void
 
121
}
 
122
 
 
123
; Be careful with this one. If %n is INT4_MAX, %i.next will wrap. The nsw bit
 
124
; says that the result is undefined, but ScalarEvolution must respect that
 
125
; subsequent passes may result the undefined behavior in predictable ways.
 
126
; CHECK: Determining loop execution counts for: @nsw_step2
 
127
; CHECK: Loop %loop: Unpredictable backedge-taken count. 
 
128
; CHECK: Loop %loop: Unpredictable max backedge-taken count. 
 
129
define void @nsw_step2(i4 %n) {
 
130
entry:
 
131
  %s = icmp sgt i4 %n, 0
 
132
  br i1 %s, label %loop, label %exit
 
133
loop:
 
134
  %i = phi i4 [ 0, %entry ], [ %i.next, %loop ]
 
135
  %i.next = add nsw i4 %i, 2
 
136
  %t = icmp slt i4 %i.next, %n
 
137
  br i1 %t, label %loop, label %exit
 
138
exit:
 
139
  ret void
 
140
}
 
141
 
 
142
; CHECK: Determining loop execution counts for: @nsw_start1
 
143
; CHECK: Loop %loop: backedge-taken count is (-2 + (2 smax %n))
 
144
; CHECK: Loop %loop: max backedge-taken count is 5
 
145
define void @nsw_start1(i4 %n) {
 
146
entry:
 
147
  %s = icmp sgt i4 %n, 0
 
148
  br i1 %s, label %loop, label %exit
 
149
loop:
 
150
  %i = phi i4 [ 1, %entry ], [ %i.next, %loop ]
 
151
  %i.next = add nsw i4 %i, 1
 
152
  %t = icmp slt i4 %i.next, %n
 
153
  br i1 %t, label %loop, label %exit
 
154
exit:
 
155
  ret void
 
156
}
 
157
 
 
158
; CHECK: Determining loop execution counts for: @nsw_start1_step2
 
159
; CHECK: Loop %loop: Unpredictable backedge-taken count. 
 
160
; CHECK: Loop %loop: Unpredictable max backedge-taken count. 
 
161
define void @nsw_start1_step2(i4 %n) {
 
162
entry:
 
163
  %s = icmp sgt i4 %n, 0
 
164
  br i1 %s, label %loop, label %exit
 
165
loop:
 
166
  %i = phi i4 [ 1, %entry ], [ %i.next, %loop ]
 
167
  %i.next = add nsw i4 %i, 2
 
168
  %t = icmp slt i4 %i.next, %n
 
169
  br i1 %t, label %loop, label %exit
 
170
exit:
 
171
  ret void
 
172
}
 
173
 
 
174
; CHECK: Determining loop execution counts for: @nsw_startx
 
175
; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
 
176
; CHECK: Loop %loop: max backedge-taken count is -1
 
177
define void @nsw_startx(i4 %n, i4 %x) {
 
178
entry:
 
179
  %s = icmp sgt i4 %n, 0
 
180
  br i1 %s, label %loop, label %exit
 
181
loop:
 
182
  %i = phi i4 [ %x, %entry ], [ %i.next, %loop ]
 
183
  %i.next = add nsw i4 %i, 1
 
184
  %t = icmp slt i4 %i.next, %n
 
185
  br i1 %t, label %loop, label %exit
 
186
exit:
 
187
  ret void
 
188
}
 
189
 
 
190
; CHECK: Determining loop execution counts for: @nsw_startx_step2
 
191
; CHECK: Loop %loop: Unpredictable backedge-taken count. 
 
192
; CHECK: Loop %loop: Unpredictable max backedge-taken count. 
 
193
define void @nsw_startx_step2(i4 %n, i4 %x) {
 
194
entry:
 
195
  %s = icmp sgt i4 %n, 0
 
196
  br i1 %s, label %loop, label %exit
 
197
loop:
 
198
  %i = phi i4 [ %x, %entry ], [ %i.next, %loop ]
 
199
  %i.next = add nsw i4 %i, 2
 
200
  %t = icmp slt i4 %i.next, %n
 
201
  br i1 %t, label %loop, label %exit
 
202
exit:
 
203
  ret void
 
204
}
 
205
 
 
206
; CHECK: Determining loop execution counts for: @even
 
207
; CHECK: Loop %loop: backedge-taken count is (-1 + (2 * %n))
 
208
; CHECK: Loop %loop: max backedge-taken count is 5
 
209
define void @even(i4 %n) {
 
210
entry:
 
211
  %m = shl i4 %n, 1
 
212
  %s = icmp sgt i4 %m, 0
 
213
  br i1 %s, label %loop, label %exit
 
214
loop:
 
215
  %i = phi i4 [ 0, %entry ], [ %i.next, %loop ]
 
216
  %i.next = add i4 %i, 1
 
217
  %t = icmp slt i4 %i.next, %m
 
218
  br i1 %t, label %loop, label %exit
 
219
exit:
 
220
  ret void
 
221
}
 
222
 
 
223
; CHECK: Determining loop execution counts for: @even_step2
 
224
; CHECK: Loop %loop: Unpredictable backedge-taken count. 
 
225
; CHECK: Loop %loop: max backedge-taken count is 2
 
226
define void @even_step2(i4 %n) {
 
227
entry:
 
228
  %m = shl i4 %n, 1
 
229
  %s = icmp sgt i4 %m, 0
 
230
  br i1 %s, label %loop, label %exit
 
231
loop:
 
232
  %i = phi i4 [ 0, %entry ], [ %i.next, %loop ]
 
233
  %i.next = add i4 %i, 2
 
234
  %t = icmp slt i4 %i.next, %m
 
235
  br i1 %t, label %loop, label %exit
 
236
exit:
 
237
  ret void
 
238
}
 
239
 
 
240
; CHECK: Determining loop execution counts for: @even_start1
 
241
; CHECK: Loop %loop: backedge-taken count is (-2 + (2 smax (2 * %n)))
 
242
; CHECK: Loop %loop: max backedge-taken count is 4
 
243
define void @even_start1(i4 %n) {
 
244
entry:
 
245
  %m = shl i4 %n, 1
 
246
  %s = icmp sgt i4 %m, 0
 
247
  br i1 %s, label %loop, label %exit
 
248
loop:
 
249
  %i = phi i4 [ 1, %entry ], [ %i.next, %loop ]
 
250
  %i.next = add i4 %i, 1
 
251
  %t = icmp slt i4 %i.next, %m
 
252
  br i1 %t, label %loop, label %exit
 
253
exit:
 
254
  ret void
 
255
}
 
256
 
 
257
; CHECK: Determining loop execution counts for: @even_start1_step2
 
258
; CHECK: Loop %loop: Unpredictable backedge-taken count. 
 
259
; CHECK: Loop %loop: max backedge-taken count is 2
 
260
define void @even_start1_step2(i4 %n) {
 
261
entry:
 
262
  %m = shl i4 %n, 1
 
263
  %s = icmp sgt i4 %m, 0
 
264
  br i1 %s, label %loop, label %exit
 
265
loop:
 
266
  %i = phi i4 [ 1, %entry ], [ %i.next, %loop ]
 
267
  %i.next = add i4 %i, 2
 
268
  %t = icmp slt i4 %i.next, %m
 
269
  br i1 %t, label %loop, label %exit
 
270
exit:
 
271
  ret void
 
272
}
 
273
 
 
274
; CHECK: Determining loop execution counts for: @even_startx
 
275
; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
 
276
; CHECK: Loop %loop: max backedge-taken count is -1
 
277
define void @even_startx(i4 %n, i4 %x) {
 
278
entry:
 
279
  %m = shl i4 %n, 1
 
280
  %s = icmp sgt i4 %m, 0
 
281
  br i1 %s, label %loop, label %exit
 
282
loop:
 
283
  %i = phi i4 [ %x, %entry ], [ %i.next, %loop ]
 
284
  %i.next = add i4 %i, 1
 
285
  %t = icmp slt i4 %i.next, %m
 
286
  br i1 %t, label %loop, label %exit
 
287
exit:
 
288
  ret void
 
289
}
 
290
 
 
291
; CHECK: Determining loop execution counts for: @even_startx_step2
 
292
; CHECK: Loop %loop: Unpredictable backedge-taken count. 
 
293
; CHECK: Loop %loop: max backedge-taken count is 7
 
294
define void @even_startx_step2(i4 %n, i4 %x) {
 
295
entry:
 
296
  %m = shl i4 %n, 1
 
297
  %s = icmp sgt i4 %m, 0
 
298
  br i1 %s, label %loop, label %exit
 
299
loop:
 
300
  %i = phi i4 [ %x, %entry ], [ %i.next, %loop ]
 
301
  %i.next = add i4 %i, 2
 
302
  %t = icmp slt i4 %i.next, %m
 
303
  br i1 %t, label %loop, label %exit
 
304
exit:
 
305
  ret void
 
306
}
 
307
 
 
308
; CHECK: Determining loop execution counts for: @even_nsw
 
309
; CHECK: Loop %loop: backedge-taken count is (-1 + (2 * %n))
 
310
; CHECK: Loop %loop: max backedge-taken count is 5
 
311
define void @even_nsw(i4 %n) {
 
312
entry:
 
313
  %m = shl i4 %n, 1
 
314
  %s = icmp sgt i4 %m, 0
 
315
  br i1 %s, label %loop, label %exit
 
316
loop:
 
317
  %i = phi i4 [ 0, %entry ], [ %i.next, %loop ]
 
318
  %i.next = add nsw i4 %i, 1
 
319
  %t = icmp slt i4 %i.next, %m
 
320
  br i1 %t, label %loop, label %exit
 
321
exit:
 
322
  ret void
 
323
}
 
324
 
 
325
; CHECK: Determining loop execution counts for: @even_nsw_step2
 
326
; CHECK: Loop %loop: backedge-taken count is ((-1 + (2 * %n)) /u 2)
 
327
; CHECK: Loop %loop: max backedge-taken count is 2
 
328
define void @even_nsw_step2(i4 %n) {
 
329
entry:
 
330
  %m = shl i4 %n, 1
 
331
  %s = icmp sgt i4 %m, 0
 
332
  br i1 %s, label %loop, label %exit
 
333
loop:
 
334
  %i = phi i4 [ 0, %entry ], [ %i.next, %loop ]
 
335
  %i.next = add nsw i4 %i, 2
 
336
  %t = icmp slt i4 %i.next, %m
 
337
  br i1 %t, label %loop, label %exit
 
338
exit:
 
339
  ret void
 
340
}
 
341
 
 
342
; CHECK: Determining loop execution counts for: @even_nsw_start1
 
343
; CHECK: Loop %loop: backedge-taken count is (-2 + (2 smax (2 * %n)))
 
344
; CHECK: Loop %loop: max backedge-taken count is 4
 
345
define void @even_nsw_start1(i4 %n) {
 
346
entry:
 
347
  %m = shl i4 %n, 1
 
348
  %s = icmp sgt i4 %m, 0
 
349
  br i1 %s, label %loop, label %exit
 
350
loop:
 
351
  %i = phi i4 [ 1, %entry ], [ %i.next, %loop ]
 
352
  %i.next = add nsw i4 %i, 1
 
353
  %t = icmp slt i4 %i.next, %m
 
354
  br i1 %t, label %loop, label %exit
 
355
exit:
 
356
  ret void
 
357
}
 
358
 
 
359
; CHECK: Determining loop execution counts for: @even_nsw_start1_step2
 
360
; CHECK: Loop %loop: backedge-taken count is ((-2 + (3 smax (2 * %n))) /u 2)
 
361
; CHECK: Loop %loop: max backedge-taken count is 2
 
362
define void @even_nsw_start1_step2(i4 %n) {
 
363
entry:
 
364
  %m = shl i4 %n, 1
 
365
  %s = icmp sgt i4 %m, 0
 
366
  br i1 %s, label %loop, label %exit
 
367
loop:
 
368
  %i = phi i4 [ 1, %entry ], [ %i.next, %loop ]
 
369
  %i.next = add nsw i4 %i, 2
 
370
  %t = icmp slt i4 %i.next, %m
 
371
  br i1 %t, label %loop, label %exit
 
372
exit:
 
373
  ret void
 
374
}
 
375
 
 
376
; CHECK: Determining loop execution counts for: @even_nsw_startx
 
377
; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
 
378
; CHECK: Loop %loop: max backedge-taken count is -1
 
379
define void @even_nsw_startx(i4 %n, i4 %x) {
 
380
entry:
 
381
  %m = shl i4 %n, 1
 
382
  %s = icmp sgt i4 %m, 0
 
383
  br i1 %s, label %loop, label %exit
 
384
loop:
 
385
  %i = phi i4 [ %x, %entry ], [ %i.next, %loop ]
 
386
  %i.next = add nsw i4 %i, 1
 
387
  %t = icmp slt i4 %i.next, %m
 
388
  br i1 %t, label %loop, label %exit
 
389
exit:
 
390
  ret void
 
391
}
 
392
 
 
393
; CHECK: Determining loop execution counts for: @even_nsw_startx_step2
 
394
; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
 
395
; CHECK: Loop %loop: max backedge-taken count is 7
 
396
define void @even_nsw_startx_step2(i4 %n, i4 %x) {
 
397
entry:
 
398
  %m = shl i4 %n, 1
 
399
  %s = icmp sgt i4 %m, 0
 
400
  br i1 %s, label %loop, label %exit
 
401
loop:
 
402
  %i = phi i4 [ %x, %entry ], [ %i.next, %loop ]
 
403
  %i.next = add nsw i4 %i, 2
 
404
  %t = icmp slt i4 %i.next, %m
 
405
  br i1 %t, label %loop, label %exit
 
406
exit:
 
407
  ret void
 
408
}