1 /* { dg-options "-O3 -fno-vect-cost-model" } */
2 struct {
3 float real;
4 float img;
5 } g[11];
6
7 float __attribute__ ((noclone))
8 foo_11 (void)
9 {
10 float sum = 0.0;
11 for (int i = 0; i < 11; ++i)
12 sum += g[i].real;
13 return sum;
14 }
15
16 float __attribute__ ((noclone))
17 foo_10 (void)
18 {
19 float sum = 0.0;
20 for (int i = 0; i < 10; ++i)
21 sum += g[i].real;
22 return sum;
23 }
24
25 int main (void)
26 {
27 float check_10 = 0.0;
28 float check_11 = 0.0;
29 for (int i = 0; i < 11; ++i)
30 {
31 asm volatile ("" : : : "memory");
32 g[i].real = (float) i;
33 g[i].img = (float) -i;
34 if (i < 10)
35 check_10 += (float) i;
36 check_11 += (float) i;
37 }
38
39 if (foo_10 () != check_10)
40 __builtin_abort ();
41 if (foo_11 () != check_11)
42 __builtin_abort ();
43
44 return 0;
45 }