1 /* { dg-do run } */
2 /* { dg-skip-if "" { ! { aarch64*-*-* } } } */
3 /* { dg-require-effective-target fpic } */
4 /* { dg-options "-O2 -fmodulo-sched -funroll-loops -fdump-rtl-sms --param sms-min-sc=1 -fmodulo-sched-allow-regmoves -fPIC" } */
5
6 extern void abort (void);
7
8 int X[1000]={0};
9 int Y[1000]={0};
10
11 extern void abort (void);
12
13 __attribute__ ((noinline))
14 int
15 foo (int len, long a)
16 {
17 int i;
18 long res = a;
19
20 len = 1000;
21 for (i = 0; i < len; i++)
22 res += X[i]* Y[i];
23
24 if (res != 601)
25 abort ();
26
27 }
28
29 int
30 main ()
31 {
32 X[0] = Y[1] = 2;
33 Y[0] = X[1] = 21;
34 X[2] = Y[3] = 3;
35 Y[2] = X[3] = 31;
36 X[4] = Y[5] = 4;
37 Y[4] = X[5] = 41;
38
39 foo (6, 3);
40 return 0;
41 }
42
43