annotate gcc/testsuite/c-c++-common/unroll-2.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* { dg-do compile } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-options "-O -fdump-tree-cunroll-details -fdump-rtl-loop2_unroll-details" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 extern void bar (int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 int j;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 void test (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 #pragma GCC unroll 8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 for (unsigned long i = 1; i <= 8; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 bar(i);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 /* { dg-final { scan-tree-dump "11:.*: loop with 7 iterations completely unrolled" "cunroll" } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 #pragma GCC unroll 8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 for (unsigned long i = 1; i <= 7; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 bar(i);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 /* { dg-final { scan-tree-dump "16:.*: loop with 6 iterations completely unrolled" "cunroll" } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 #pragma GCC unroll 8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 for (unsigned long i = 1; i <= 15; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 bar(i);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 /* { dg-final { scan-rtl-dump "21:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 #pragma GCC unroll 8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 for (unsigned long i = 1; i <= j; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 bar(i);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 /* { dg-final { scan-rtl-dump "26:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 #pragma GCC unroll 7
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 for (unsigned long i = 1; i <= j; ++i)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 bar(i);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 /* { dg-final { scan-rtl-dump "31:.*: optimized: loop unrolled 3 times" "loop2_unroll" } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 unsigned long i = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 #pragma GCC unroll 3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 do {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 bar(i);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 } while (++i < 9);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 /* { dg-final { scan-rtl-dump "3\[79\]:.*: optimized: loop unrolled 2 times" "loop2_unroll" } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 }