/* See also "../../gfortran.dg/goacc/loop-2-serial.f95". */ void S(void) { int i, j; #pragma acc serial { #pragma acc loop auto for (i = 0; i < 10; i++) { } #pragma acc loop gang for (i = 0; i < 10; i++) { } #pragma acc loop gang(static:5) for (i = 0; i < 10; i++) { } #pragma acc loop gang(static:*) for (i = 0; i < 10; i++) { } #pragma acc loop gang // { dg-message "containing loop" } for (i = 0; i < 10; i++) { #pragma acc loop vector for (j = 1; j < 10; j++) { } #pragma acc loop worker for (j = 1; j < 10; j++) { } #pragma acc loop gang // { dg-error "inner loop uses same" } for (j = 1; j < 10; j++) { } } #pragma acc loop seq gang // { dg-error "'seq' overrides" } for (i = 0; i < 10; i++) { } #pragma acc loop worker for (i = 0; i < 10; i++) { } #pragma acc loop worker // { dg-message "containing loop" 2 } for (i = 0; i < 10; i++) { #pragma acc loop vector for (j = 1; j < 10; j++) { } #pragma acc loop worker // { dg-error "inner loop uses same" } for (j = 1; j < 10; j++) { } #pragma acc loop gang // { dg-error "incorrectly nested" } for (j = 1; j < 10; j++) { } } #pragma acc loop seq worker // { dg-error "'seq' overrides" } for (i = 0; i < 10; i++) { } #pragma acc loop gang worker for (i = 0; i < 10; i++) { } #pragma acc loop vector for (i = 0; i < 10; i++) { } for (i = 0; i < 10; i++) { } #pragma acc loop vector // { dg-message "containing loop" 3 } for (i = 0; i < 10; i++) { #pragma acc loop vector // { dg-error "inner loop uses same" } for (j = 1; j < 10; j++) { } #pragma acc loop worker // { dg-error "incorrectly nested" } for (j = 1; j < 10; j++) { } #pragma acc loop gang // { dg-error "incorrectly nested" } for (j = 1; j < 10; j++) { } } #pragma acc loop seq vector // { dg-error "'seq' overrides" } for (i = 0; i < 10; i++) { } #pragma acc loop gang vector for (i = 0; i < 10; i++) { } #pragma acc loop worker vector for (i = 0; i < 10; i++) { } #pragma acc loop auto for (i = 0; i < 10; i++) { } #pragma acc loop seq auto // { dg-error "'seq' overrides" } for (i = 0; i < 10; i++) { } #pragma acc loop gang auto // { dg-error "'auto' conflicts" } for (i = 0; i < 10; i++) { } #pragma acc loop worker auto // { dg-error "'auto' conflicts" } for (i = 0; i < 10; i++) { } #pragma acc loop vector auto // { dg-error "'auto' conflicts" } for (i = 0; i < 10; i++) { } } #pragma acc serial loop auto for (i = 0; i < 10; i++) { } #pragma acc serial loop gang for (i = 0; i < 10; i++) { } #pragma acc serial loop gang(static:5) for (i = 0; i < 10; i++) { } #pragma acc serial loop gang(static:*) for (i = 0; i < 10; i++) { } #pragma acc serial loop seq gang // { dg-error "'seq' overrides" } for (i = 0; i < 10; i++) { } #pragma acc serial loop worker for (i = 0; i < 10; i++) { } #pragma acc serial loop seq worker // { dg-error "'seq' overrides" } for (i = 0; i < 10; i++) { } #pragma acc serial loop gang worker for (i = 0; i < 10; i++) { } #pragma acc serial loop vector for (i = 0; i < 10; i++) { } #pragma acc serial loop seq vector // { dg-error "'seq' overrides" } for (i = 0; i < 10; i++) { } #pragma acc serial loop gang vector for (i = 0; i < 10; i++) { } #pragma acc serial loop worker vector for (i = 0; i < 10; i++) { } #pragma acc serial loop auto for (i = 0; i < 10; i++) { } #pragma acc serial loop seq auto // { dg-error "'seq' overrides" } for (i = 0; i < 10; i++) { } #pragma acc serial loop gang auto // { dg-error "'auto' conflicts" } for (i = 0; i < 10; i++) { } #pragma acc serial loop worker auto // { dg-error "'auto' conflicts" } for (i = 0; i < 10; i++) { } #pragma acc serial loop vector auto // { dg-error "'auto' conflicts" } for (i = 0; i < 10; i++) { } }