111
|
1 /* { dg-do run } */
|
|
2 /* { dg-options "-O3 -fmodulo-sched -fstrict-aliasing -fdump-rtl-sms -fmodulo-sched-allow-regmoves --param sms-min-sc=1" } */
|
|
3
|
|
4 extern void abort (void);
|
|
5
|
|
6 __attribute__ ((noinline))
|
|
7 void foo (int * __restrict__ a, int * __restrict__ b, short * c)
|
|
8 {
|
|
9 int i;
|
|
10 for(i = 0; i < 100; i+=4)
|
|
11 {
|
|
12 a[i] = b[i] * c[i];
|
|
13 a[i+1] = b[i+1] * c[i+1];
|
|
14 a[i+2] = b[i+2] * c[i+2];
|
|
15 a[i+3] = b[i+3] * c[i+3];
|
|
16 }
|
|
17 }
|
|
18
|
|
19 int a[100], b[100];
|
|
20 short c[100];
|
|
21
|
|
22 int main()
|
|
23 {
|
|
24 #if (__SIZEOF_INT__ <= 2)
|
|
25 int i;
|
|
26 long res;
|
|
27 #else
|
|
28 int i, res;
|
|
29 #endif
|
|
30 for(i = 0; i < 100; i++)
|
|
31 {
|
|
32 b[i] = c[i] = i;
|
|
33 }
|
|
34 foo(a, b, c);
|
|
35
|
|
36 res = 0;
|
|
37 for(i = 0; i < 100; i++)
|
|
38 {
|
|
39 res += a[i];
|
|
40 }
|
|
41 if(res != 328350)
|
|
42 abort();
|
|
43
|
|
44 return 0;
|
|
45 }
|
|
46
|
|
47
|