]>
Commit | Line | Data |
---|---|---|
d9c259ef | 1 | /* { dg-do run } */ |
9bd1ee6d | 2 | /* { dg-options "-O2 -fno-inline -fno-tree-loop-distribute-patterns -fpredictive-commoning -fdump-tree-pcom-details-blocks" } */ |
d9c259ef BC |
3 | |
4 | int arr[105] = {2, 3, 5, 7, 11}; | |
5 | int result0[10] = {2, 3, 5, 7, 11}; | |
6 | int result1[10] = {0, 3, -1, -2, 11, 0}; | |
7 | int result2[10] = {0, 0, -1, -1, -2, 0}; | |
8 | int result3[10] = {0, 0, 0, -1, -1, -2, 0}; | |
9 | int result4[10] = {0, 0, 0, 0, -1, -1, -2, 0}; | |
10 | int result100[105] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
11 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
12 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
13 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
14 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
15 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
16 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, 0}; | |
17 | ||
18 | extern void abort (void); | |
19 | ||
20 | void __attribute__((noinline)) foo (int *a, int len) | |
21 | { | |
22 | int i; | |
23 | for (i = 0; i < len; i++) | |
24 | { | |
25 | a[i] = 0; | |
26 | a[i + 2] = -1; | |
27 | a[i + 3] = -2; | |
28 | } | |
29 | } | |
30 | ||
31 | void check (int *a, int *res, int len) | |
32 | { | |
33 | int i; | |
34 | ||
35 | for (i = 0; i < len; i++) | |
36 | if (a[i] != res[i]) | |
37 | abort (); | |
38 | } | |
39 | ||
40 | int main (void) | |
41 | { | |
42 | foo (arr, 0); | |
43 | check (arr, result0, 10); | |
44 | ||
45 | foo (arr, 1); | |
46 | check (arr, result1, 10); | |
47 | ||
48 | foo (arr, 2); | |
49 | check (arr, result2, 10); | |
50 | ||
51 | foo (arr, 3); | |
52 | check (arr, result3, 10); | |
53 | ||
54 | foo (arr, 4); | |
55 | check (arr, result4, 10); | |
56 | ||
57 | foo (arr, 100); | |
58 | check (arr, result100, 105); | |
59 | ||
60 | return 0; | |
61 | } | |
62 | /* { dg-final { scan-tree-dump "Store-stores chain" "pcom"} } */ | |
9bd1ee6d | 63 | /* { dg-final { scan-tree-dump-not "Invalid sum" "pcom" } } */ |