OLD | NEW |
1 /* { dg-do run } */ | 1 /* { dg-do run } */ |
2 /* { dg-options "-O2 -fmodulo-sched -funroll-loops" } */ | 2 /* { dg-options "-O2 -fmodulo-sched -funroll-loops -fdump-rtl-sms" } */ |
3 | 3 |
4 extern void abort (void); | 4 extern void abort (void); |
5 | 5 |
6 int X[1000]={0}; | 6 int X[1000]={0}; |
7 int Y[1000]={0}; | 7 int Y[1000]={0}; |
8 | 8 |
9 extern void abort (void); | 9 extern void abort (void); |
10 | 10 |
| 11 __attribute__ ((noinline)) |
11 int | 12 int |
12 foo (int len, long a) | 13 foo (int len, long a) |
13 { | 14 { |
14 int i; | 15 int i; |
15 long res = a; | 16 long res = a; |
16 | 17 |
17 len = 1000; | 18 len = 1000; |
18 for (i = 0; i < len; i++) | 19 for (i = 0; i < len; i++) |
19 res += X[i]* Y[i]; | 20 res += X[i]* Y[i]; |
20 | 21 |
21 if (res != 601) | 22 if (res != 601) |
22 abort (); | 23 abort (); |
23 | 24 |
24 } | 25 } |
25 | 26 |
26 int | 27 int |
27 main () | 28 main () |
28 { | 29 { |
29 X[0] = Y[1] = 2; | 30 X[0] = Y[1] = 2; |
30 Y[0] = X[1] = 21; | 31 Y[0] = X[1] = 21; |
31 X[2] = Y[3] = 3; | 32 X[2] = Y[3] = 3; |
32 Y[2] = X[3] = 31; | 33 Y[2] = X[3] = 31; |
33 X[4] = Y[5] = 4; | 34 X[4] = Y[5] = 4; |
34 Y[4] = X[5] = 41; | 35 Y[4] = X[5] = 41; |
35 | 36 |
36 foo (6, 3); | 37 foo (6, 3); |
37 return 0; | 38 return 0; |
38 } | 39 } |
39 | 40 |
| 41 /* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target spu-*-* pow
erpc*-*-* } } } */ |
| 42 /* { dg-final { cleanup-rtl-dump "sms" } } */ |
| 43 |
OLD | NEW |