comparison 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
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* { dg-do compile } */
2 /* { dg-options "-O -fdump-tree-cunroll-details -fdump-rtl-loop2_unroll-details" } */
3
4 extern void bar (int);
5
6 int j;
7
8 void test (void)
9 {
10 #pragma GCC unroll 8
11 for (unsigned long i = 1; i <= 8; ++i)
12 bar(i);
13 /* { dg-final { scan-tree-dump "11:.*: loop with 7 iterations completely unrolled" "cunroll" } } */
14
15 #pragma GCC unroll 8
16 for (unsigned long i = 1; i <= 7; ++i)
17 bar(i);
18 /* { dg-final { scan-tree-dump "16:.*: loop with 6 iterations completely unrolled" "cunroll" } } */
19
20 #pragma GCC unroll 8
21 for (unsigned long i = 1; i <= 15; ++i)
22 bar(i);
23 /* { dg-final { scan-rtl-dump "21:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
24
25 #pragma GCC unroll 8
26 for (unsigned long i = 1; i <= j; ++i)
27 bar(i);
28 /* { dg-final { scan-rtl-dump "26:.*: optimized: loop unrolled 7 times" "loop2_unroll" } } */
29
30 #pragma GCC unroll 7
31 for (unsigned long i = 1; i <= j; ++i)
32 bar(i);
33 /* { dg-final { scan-rtl-dump "31:.*: optimized: loop unrolled 3 times" "loop2_unroll" } } */
34
35 unsigned long i = 0;
36 #pragma GCC unroll 3
37 do {
38 bar(i);
39 } while (++i < 9);
40 /* { dg-final { scan-rtl-dump "3\[79\]:.*: optimized: loop unrolled 2 times" "loop2_unroll" } } */
41 }