| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-rtl-loop2_unroll-optimized" } */ |
| |
| /* The pragma specified for foo2 should not affect foo1. |
| Verify compiler won't perform unrolling for foo1. */ |
| |
| #define N 1024 |
| extern int a1[N], b1[N], c1[N]; |
| extern int a2[N], b2[N], c2[N]; |
| extern int n; |
| |
| void |
| foo1 () |
| { |
| int i; |
| for (i = 0; i < n; i++) |
| c1[i] += a1[i] + b1[i]; |
| } |
| |
| #pragma GCC optimize("O3,unroll-loops") |
| void |
| foo2 () |
| { |
| int i; |
| for (i = 0; i < n; i++) |
| c2[i] += a2[i] + b2[i]; |
| } |
| |
| /* { dg-final { scan-rtl-dump-times "optimized: loop unrolled" 1 "loop2_unroll" } } */ |
| |