annotate gcc/testsuite/gcc.dg/tree-ssa/cunroll-13.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile } */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2 /* { dg-options "-O3 -fgimple -fdump-tree-cunroll-blocks-details" } */
111
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 #if __SIZEOF_INT__ < 4
kono
parents:
diff changeset
5 __extension__ typedef __INT32_TYPE__ i32;
kono
parents:
diff changeset
6 #else
kono
parents:
diff changeset
7 typedef int i32;
kono
parents:
diff changeset
8 #endif
kono
parents:
diff changeset
9
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
10 struct a {i32 a[8];i32 b;};
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
11
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
12 void __GIMPLE (startwith("fix_loops"))
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
13 t (struct a * a)
111
kono
parents:
diff changeset
14 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
15 i32 i;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
16 i32 _1;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
17 i32 _2;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
18 i32 _9;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
19 i32 _11;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
21 bb_2:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
22 _11 = a_6(D)->a[0];
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
23 if (_11 != _Literal (i32) 0)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
24 goto bb_6;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
25 else
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
26 goto bb_3;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
27
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
28 bb_3:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
29 return;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
30
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
31 bb_4:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
32 _1 = _2 + 1;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
33 a_6(D)->a[i_19] = _1;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
34 i_8 = i_19 + _Literal (i32) 1;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
35 if (i_8 <= _Literal (i32) 123455)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
36 goto bb_5;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
37 else
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
38 goto bb_3;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
39
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
40 bb_5:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
41 i_19 = __PHI (bb_6: _Literal (i32) 1, bb_4: i_8);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
42 _2 = a_6(D)->a[i_19];
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
43 if (_2 != _Literal (i32) 0)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
44 goto bb_4;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
45 else
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
46 goto bb_3;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
47
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
48 bb_6:
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
49 _9 = _11 + _Literal (i32) 1;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
50 a_6(D)->a[0] = _9;
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
51 goto bb_5;
111
kono
parents:
diff changeset
52 }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
53
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
54 /* This testcase relies on the fact that we do not eliminate the redundant test
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
55 for i early. It is necessary to disable all passes that do so, for the
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
56 moment starting with the loop pipeline is good enough. */
111
kono
parents:
diff changeset
57 /* { dg-final { scan-tree-dump-times "Loop 1 iterates 123454 times" 1 "cunroll" } } */
kono
parents:
diff changeset
58 /* { dg-final { scan-tree-dump-times "Last iteration exit edge was proved true" 1 "cunroll" } } */
kono
parents:
diff changeset
59 /* { dg-final { scan-tree-dump-times "Exit condition of peeled iterations was eliminated" 1 "cunroll" } } */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
60 /* { dg-final { scan-tree-dump-times "loop with 6 iterations completely unrolled" 1 "cunroll" } } */
111
kono
parents:
diff changeset
61 /* { dg-final { scan-tree-dump-not "Invalid sum" "cunroll" } } */