| /* { dg-do run } */ |
| /* { dg-options "-fno-openmp -fopenmp-simd -fdump-tree-original -fdump-tree-gimple" } */ |
| |
| int |
| compute_sum1 (void) |
| { |
| int sum = 0; |
| int i, j; |
| |
| #pragma omp simd reduction(+:sum) |
| for (i = 3; i < 10; ++i) |
| #pragma omp unroll full |
| for (j = -2; j < 7; ++j) |
| sum++; |
| |
| if (i != 10 || j != 7) |
| __builtin_abort (); |
| |
| return sum; |
| } |
| |
| int |
| compute_sum2 (void) |
| { |
| int sum = 0; |
| int i, j; |
| |
| #pragma omp simd reduction(+:sum) |
| #pragma omp unroll partial(5) |
| for (i = 3; i < 10; ++i) |
| for (j = -2; j < 7; ++j) |
| sum++; |
| |
| if (i != 10 || j != 7) |
| __builtin_abort (); |
| |
| return sum; |
| } |
| |
| int |
| compute_sum3 (void) |
| { |
| int sum = 0; |
| int i, j; |
| |
| #pragma omp simd reduction(+:sum) |
| #pragma omp unroll partial(1) |
| for (i = 3; i < 10; ++i) |
| for (j = -2; j < 7; ++j) |
| sum++; |
| |
| if (i != 10 || j != 7) |
| __builtin_abort (); |
| |
| return sum; |
| } |
| |
| int |
| main () |
| { |
| if (compute_sum1 () != 7 * 9 |
| || compute_sum2 () != 7 * 9 |
| || compute_sum3 () != 7 * 9) |
| __builtin_abort (); |
| |
| return 0; |
| } |
| |
| /* { dg-final { scan-tree-dump {omp unroll} "original" } } */ |
| /* { dg-final { scan-tree-dump-not {omp unroll} "gimple" } } */ |