]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/loop-versioning-1.c
e61ff7a5d107977ba25d5dc1f660bcfaca0c61ad
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / loop-versioning-1.c
1 /* { dg-options "-O3 -fdump-tree-lversion-details" } */
2
3 /* The simplest IV case. */
4
5 void
6 f1 (double *x, int stepx, int n)
7 {
8 for (int i = 0; i < n; ++i)
9 x[stepx * i] = 100;
10 }
11
12 void
13 f2 (double *x, int stepx, int limit)
14 {
15 for (int i = 0; i < limit; i += stepx)
16 x[i] = 100;
17 }
18
19 void
20 f3 (double *x, int stepx, int limit)
21 {
22 for (double *y = x; y < x + limit; y += stepx)
23 *y = 100;
24 }
25
26 void
27 f4 (double *x, int stepx, unsigned int n)
28 {
29 for (unsigned int i = 0; i < n; ++i)
30 x[stepx * i] = 100;
31 }
32
33 void
34 f5 (double *x, int stepx, unsigned int limit)
35 {
36 for (unsigned int i = 0; i < limit; i += stepx)
37 x[i] = 100;
38 }
39
40 void
41 f6 (double *x, int stepx, unsigned int limit)
42 {
43 for (double *y = x; y < x + limit; y += stepx)
44 *y = 100;
45 }
46
47 double x[10000];
48
49 void
50 g1 (int stepx, int n)
51 {
52 for (int i = 0; i < n; ++i)
53 x[stepx * i] = 100;
54 }
55
56 void
57 g2 (int stepx, int limit)
58 {
59 for (int i = 0; i < limit; i += stepx)
60 x[i] = 100;
61 }
62
63 void
64 g3 (int stepx, int limit)
65 {
66 for (double *y = x; y < x + limit; y += stepx)
67 *y = 100;
68 }
69
70 void
71 g4 (int stepx, unsigned int n)
72 {
73 for (unsigned int i = 0; i < n; ++i)
74 x[stepx * i] = 100;
75 }
76
77 void
78 g5 (int stepx, unsigned int limit)
79 {
80 for (unsigned int i = 0; i < limit; i += stepx)
81 x[i] = 100;
82 }
83
84 void
85 g6 (int stepx, unsigned int limit)
86 {
87 for (double *y = x; y < x + limit; y += stepx)
88 *y = 100;
89 }
90
91 /* { dg-final { scan-tree-dump-times {want to version containing loop} 12 "lversion" } } */
92 /* { dg-final { scan-tree-dump-times {versioned this loop} 12 "lversion" } } */