OSDN Git Service

2012-02-28 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / torture / pr45720.c
1 /* { dg-do run } */
2 /* { dg-options "-ftree-vectorize" } */
3
4 float val[256];
5 float x;
6 void __attribute__((noinline,noclone))
7 foo(int len, int beg)
8 {
9   int i;
10   for (i = len - 1; i >= beg; --i)
11     x += val[i] * 2;
12 }
13 void __attribute__((noinline,noclone))
14 bar(void)
15 {
16   int i;
17   for (i = 255; i >= 0; --i)
18     x += val[i] * 2;
19   for (i = 254; i >= 0; --i)
20     x += val[i] * 2;
21   for (i = 253; i >= 0; --i)
22     x += val[i] * 2;
23   for (i = 252; i >= 0; --i)
24     x += val[i] * 2;
25 }
26 float y[256];
27 void __attribute__((noinline,noclone))
28 foobar(void)
29 {
30   int i;
31   for (i = 0; i < 252; ++i)
32     {
33       float l = 0;
34       l += val[255 - i] * 2;
35       l += val[254 - i] * 2;
36       l += val[253 - i] * 2;
37       l += val[252 - i] * 2;
38       y[i] = l;
39     }
40 }
41 int main()
42 {
43   foo(256-1, 0);
44   foo(256-2, 0);
45   foo(256-3, 0);
46   foo(256-4, 0);
47   bar();
48   foobar();
49   return 0;
50 }