From ba045eb2297e8e51c7e99c2b2650f32cb642d209 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Wed, 2 Oct 2019 10:50:23 +0000 Subject: [PATCH] Improve OMP/ACC error diagnostic in Fortran gcc/fortran/ * openmp.c (gfc_match_omp_clauses): Show a clause-parsing error if none was rised before. * parse.c (matcha, matcho): If error occurred after OpenMP/OpenACC directive matched, do not try other directives. gcc/testsuite/ * gfortran.dg/goacc/asyncwait-1.f95: Handle new error message. * gfortran.dg/goacc/asyncwait-2.f95: Likewise * gfortran.dg/goacc/asyncwait-3.f95: Likewise * gfortran.dg/goacc/asyncwait-4.f95: Likewise * gfortran.dg/goacc/default-2.f: Likewise * gfortran.dg/goacc/enter-exit-data.f95: Likewise * gfortran.dg/goacc/if.f95: Likewise * gfortran.dg/goacc/list.f95: Likewise * gfortran.dg/goacc/literal.f95: Likewise * gfortran.dg/goacc/loop-2-kernels-tile.f: Likewise95 * gfortran.dg/goacc/loop-2-parallel-tile.f95: Likewise * gfortran.dg/goacc/loop-7.f95: Likewise * gfortran.dg/goacc/parallel-kernels-cla: Likewiseuses.f95 * gfortran.dg/goacc/routine-6.f90: Likewise * gfortran.dg/goacc/several-directives.f95: Likewise * gfortran.dg/goacc/sie.f95: Likewise * gfortran.dg/goacc/tile-1.f90: Likewise * gfortran.dg/goacc/update-if_present-2.: Likewisef90 * gfortran.dg/gomp/declare-simd-1.f90: Likewise * gfortran.dg/gomp/pr29759.f90: Likewise From-SVN: r276447 --- gcc/fortran/ChangeLog | 7 +++ gcc/fortran/openmp.c | 2 + gcc/fortran/parse.c | 16 ++++++- gcc/testsuite/ChangeLog | 23 ++++++++++ .../gfortran.dg/goacc/asyncwait-1.f95 | 12 ++--- .../gfortran.dg/goacc/asyncwait-2.f95 | 4 +- .../gfortran.dg/goacc/asyncwait-3.f95 | 4 +- .../gfortran.dg/goacc/asyncwait-4.f95 | 20 ++++----- gcc/testsuite/gfortran.dg/goacc/default-2.f | 44 +++++++++---------- .../gfortran.dg/goacc/enter-exit-data.f95 | 4 +- gcc/testsuite/gfortran.dg/goacc/if.f95 | 14 +++--- gcc/testsuite/gfortran.dg/goacc/list.f95 | 6 +-- gcc/testsuite/gfortran.dg/goacc/literal.f95 | 2 +- .../gfortran.dg/goacc/loop-2-kernels-tile.f95 | 4 +- .../goacc/loop-2-parallel-tile.f95 | 4 +- gcc/testsuite/gfortran.dg/goacc/loop-7.f95 | 20 ++++----- .../goacc/parallel-kernels-clauses.f95 | 28 ++++++------ gcc/testsuite/gfortran.dg/goacc/routine-6.f90 | 2 +- .../gfortran.dg/goacc/several-directives.f95 | 4 +- gcc/testsuite/gfortran.dg/goacc/sie.f95 | 12 ++--- gcc/testsuite/gfortran.dg/goacc/tile-1.f90 | 8 ++-- .../gfortran.dg/goacc/update-if_present-2.f90 | 16 +++---- .../gfortran.dg/gomp/declare-simd-1.f90 | 2 +- gcc/testsuite/gfortran.dg/gomp/pr29759.f90 | 8 ++-- 24 files changed, 155 insertions(+), 111 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index af0a0aca343..075f3b9df3b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2019-10-02 Tobias Burnus + + * openmp.c (gfc_match_omp_clauses): Show a clause-parsing + error if none was rised before. + * parse.c (matcha, matcho): If error occurred after + OpenMP/OpenACC directive matched, do not try other directives. + 2019-10-02 Tobias Burnus * trans-openmp.c (gfc_omp_is_optional_argument): Fix coding diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index bda7f288989..2beac3dc054 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -1922,6 +1922,8 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, const omp_mask mask, if (gfc_match_omp_eos () != MATCH_YES) { + if (!gfc_error_flag_test ()) + gfc_error ("Failed to match clause at %C"); gfc_free_omp_clauses (c); return MATCH_ERROR; } diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index 5bd04b839ce..4d343450555 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -609,13 +609,18 @@ decode_statement (void) /* Like match and if spec_only, goto do_spec_only without actually matching. */ +/* If the directive matched but the clauses failed, do not start + matching the next directive in the same switch statement. */ #define matcha(keyword, subr, st) \ do { \ + match m2; \ if (spec_only && gfc_match (keyword) == MATCH_YES) \ goto do_spec_only; \ - else if (match_word (keyword, subr, &old_locus) \ + else if ((m2 = match_word (keyword, subr, &old_locus)) \ == MATCH_YES) \ return st; \ + else if (m2 == MATCH_ERROR) \ + goto error_handling; \ else \ undo_new_statement (); \ } while (0) @@ -711,6 +716,7 @@ decode_oacc_directive (void) /* Directive not found or stored an error message. Check and give up. */ + error_handling: if (gfc_error_check () == 0) gfc_error_now ("Unclassifiable OpenACC directive at %C"); @@ -746,18 +752,23 @@ decode_oacc_directive (void) /* Like match, but don't match anything if not -fopenmp and if spec_only, goto do_spec_only without actually matching. */ +/* If the directive matched but the clauses failed, do not start + matching the next directive in the same switch statement. */ #define matcho(keyword, subr, st) \ do { \ + match m2; \ if (!flag_openmp) \ ; \ else if (spec_only && gfc_match (keyword) == MATCH_YES) \ goto do_spec_only; \ - else if (match_word (keyword, subr, &old_locus) \ + else if ((m2 = match_word (keyword, subr, &old_locus)) \ == MATCH_YES) \ { \ ret = st; \ goto finish; \ } \ + else if (m2 == MATCH_ERROR) \ + goto error_handling; \ else \ undo_new_statement (); \ } while (0) @@ -1030,6 +1041,7 @@ decode_omp_directive (void) not -fopenmp and simd_matched is false, i.e. if a directive other than one marked with match has been seen. */ + error_handling: if (flag_openmp || simd_matched) { if (!gfc_error_check ()) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d95e6e753f2..a5a1cf36df2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,26 @@ +2019-10-02 Tobias Burnus + + * gfortran.dg/goacc/asyncwait-1.f95: Handle new error message. + * gfortran.dg/goacc/asyncwait-2.f95: Likewise. + * gfortran.dg/goacc/asyncwait-3.f95: Likewise. + * gfortran.dg/goacc/asyncwait-4.f95: Likewise. + * gfortran.dg/goacc/default-2.f: Likewise. + * gfortran.dg/goacc/enter-exit-data.f95: Likewise. + * gfortran.dg/goacc/if.f95: Likewise. + * gfortran.dg/goacc/list.f95: Likewise. + * gfortran.dg/goacc/literal.f95: Likewise. + * gfortran.dg/goacc/loop-2-kernels-tile.f95: Likewise. + * gfortran.dg/goacc/loop-2-parallel-tile.f95: Likewise. + * gfortran.dg/goacc/loop-7.f95: Likewise. + * gfortran.dg/goacc/parallel-kernels-clauses.f95: Likewise. + * gfortran.dg/goacc/routine-6.f90: Likewise. + * gfortran.dg/goacc/several-directives.f95: Likewise. + * gfortran.dg/goacc/sie.f95: Likewise. + * gfortran.dg/goacc/tile-1.f90: Likewise. + * gfortran.dg/goacc/update-if_present-2.f90: Likewise. + * gfortran.dg/gomp/declare-simd-1.f90: Likewise. + * gfortran.dg/gomp/pr29759.f90: Likewise. + 2019-10-02 Tobias Burnus * libgomp/testsuite/libgomp.fortran/use_device_ptr-optional-1.f90: New. diff --git a/gcc/testsuite/gfortran.dg/goacc/asyncwait-1.f95 b/gcc/testsuite/gfortran.dg/goacc/asyncwait-1.f95 index d630d388ef7..c8a72fabadd 100644 --- a/gcc/testsuite/gfortran.dg/goacc/asyncwait-1.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/asyncwait-1.f95 @@ -11,13 +11,13 @@ program asyncwait a(:) = 3.0 b(:) = 0.0 - !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1 2) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1 2) ! { dg-error "Failed to match clause" } do i = 1, N b(i) = a(i) end do !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } - !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1,) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1,) ! { dg-error "Failed to match clause" } do i = 1, N b(i) = a(i) end do @@ -29,25 +29,25 @@ program asyncwait end do !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } - !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1,2,) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1,2,) ! { dg-error "Failed to match clause" } do i = 1, N b(i) = a(i) end do !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } - !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1,2 3) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1,2 3) ! { dg-error "Failed to match clause" } do i = 1, N b(i) = a(i) end do !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } - !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1,2,,) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1,2,,) ! { dg-error "Failed to match clause" } do i = 1, N b(i) = a(i) end do !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } - !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1 ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel copyin (a(1:N)) copy (b(1:N)) async (1 ! { dg-error "Failed to match clause" } do i = 1, N b(i) = a(i) end do diff --git a/gcc/testsuite/gfortran.dg/goacc/asyncwait-2.f95 b/gcc/testsuite/gfortran.dg/goacc/asyncwait-2.f95 index fe4e4eeed2c..3663c9b2ffc 100644 --- a/gcc/testsuite/gfortran.dg/goacc/asyncwait-2.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/asyncwait-2.f95 @@ -83,13 +83,13 @@ program asyncwait end do !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } - !$acc parallel copyin (a(1:N)) copy (b(1:N)) waitasync ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel copyin (a(1:N)) copy (b(1:N)) waitasync ! { dg-error "Failed to match clause" } do i = 1, N b(i) = a(i) end do !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } - !$acc parallel copyin (a(1:N)) copy (b(1:N)) asyncwait ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel copyin (a(1:N)) copy (b(1:N)) asyncwait ! { dg-error "Failed to match clause" } do i = 1, N b(i) = a(i) end do diff --git a/gcc/testsuite/gfortran.dg/goacc/asyncwait-3.f95 b/gcc/testsuite/gfortran.dg/goacc/asyncwait-3.f95 index 5c55c36e0ac..815928a1bb7 100644 --- a/gcc/testsuite/gfortran.dg/goacc/asyncwait-3.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/asyncwait-3.f95 @@ -33,9 +33,9 @@ program asyncwait !$acc wait (1.0) ! { dg-error "WAIT clause at \\\(1\\\) requires a scalar INTEGER expression" } - !$acc wait 1 ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait 1 ! { dg-error "Failed to match clause" } - !$acc wait N ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait N ! { dg-error "Failed to match clause" } !$acc wait (1) end program asyncwait diff --git a/gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95 b/gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95 index df311545c52..057d06bbe78 100644 --- a/gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95 @@ -11,21 +11,21 @@ program asyncwait a(:) = 3.0 b(:) = 0.0 - !$acc wait async (1 2) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait async (1 2) ! { dg-error "Failed to match clause" } - !$acc wait async (1,) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait async (1,) ! { dg-error "Failed to match clause" } !$acc wait async (,1) ! { dg-error "Invalid character in name" } - !$acc wait async (1, 2, ) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait async (1, 2, ) ! { dg-error "Failed to match clause" } - !$acc wait async (1, 2, ,) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait async (1, 2, ,) ! { dg-error "Failed to match clause" } - !$acc wait async (1 ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait async (1 ! { dg-error "Failed to match clause" } - !$acc wait async (1, *) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait async (1, *) ! { dg-error "Failed to match clause" } - !$acc wait async (1, a) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait async (1, a) ! { dg-error "Failed to match clause" } !$acc wait async (a) ! { dg-error "ASYNC clause at \\\(1\\\) requires a scalar INTEGER expression" } @@ -33,9 +33,9 @@ program asyncwait !$acc wait async (1.0) ! { dg-error "ASYNC clause at \\\(1\\\) requires a scalar INTEGER expression" } - !$acc wait async 1 ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait async 1 ! { dg-error "Failed to match clause" } - !$acc waitasync ! { dg-error "Unclassifiable OpenACC directive" } + !$acc waitasync ! { dg-error "Failed to match clause" } - !$acc wait,async ! { dg-error "Unclassifiable OpenACC directive" } + !$acc wait,async ! { dg-error "Failed to match clause" } end program asyncwait diff --git a/gcc/testsuite/gfortran.dg/goacc/default-2.f b/gcc/testsuite/gfortran.dg/goacc/default-2.f index 8f886887f4b..ea82388eae9 100644 --- a/gcc/testsuite/gfortran.dg/goacc/default-2.f +++ b/gcc/testsuite/gfortran.dg/goacc/default-2.f @@ -3,58 +3,58 @@ SUBROUTINE F1 IMPLICIT NONE -!$ACC KERNELS DEFAULT ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT ( ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT ( ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT ( ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT ( ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT (, ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT (, ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT (, ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT (, ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT () ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT () ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT () ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT () ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT (,) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT (,) ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT (,) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT (,) ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT (FIRSTPRIVATE) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT (FIRSTPRIVATE) ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT (FIRSTPRIVATE) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT (FIRSTPRIVATE) ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT (PRIVATE) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT (PRIVATE) ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT (PRIVATE) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT (PRIVATE) ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT (SHARED) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT (SHARED) ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT (SHARED) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT (SHARED) ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT (NONE ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT (NONE ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT (NONE ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT (NONE ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT (NONE NONE) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT (NONE NONE) ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT (NONE NONE) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT (NONE NONE) ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } -!$ACC KERNELS DEFAULT (NONE, NONE) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC KERNELS DEFAULT (NONE, NONE) ! { dg-error "Failed to match clause" } !$ACC END KERNELS ! { dg-error "Unexpected" } -!$ACC PARALLEL DEFAULT (NONE, NONE) ! { dg-error "Unclassifiable OpenACC directive" } +!$ACC PARALLEL DEFAULT (NONE, NONE) ! { dg-error "Failed to match clause" } !$ACC END PARALLEL ! { dg-error "Unexpected" } END SUBROUTINE F1 diff --git a/gcc/testsuite/gfortran.dg/goacc/enter-exit-data.f95 b/gcc/testsuite/gfortran.dg/goacc/enter-exit-data.f95 index 805459c1bb0..a414df8d439 100644 --- a/gcc/testsuite/gfortran.dg/goacc/enter-exit-data.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/enter-exit-data.f95 @@ -28,7 +28,7 @@ contains !$acc enter data !$acc enter data if (.false.) !$acc enter data if (l) - !$acc enter data if (.false.) if (l) ! { dg-error "Unclassifiable" } + !$acc enter data if (.false.) if (l) ! { dg-error "Failed to match clause" } !$acc enter data if (i) ! { dg-error "LOGICAL" } !$acc enter data if (1) ! { dg-error "LOGICAL" } !$acc enter data if (a) ! { dg-error "LOGICAL" } @@ -63,7 +63,7 @@ contains !$acc exit data !$acc exit data if (.false.) !$acc exit data if (l) - !$acc exit data if (.false.) if (l) ! { dg-error "Unclassifiable" } + !$acc exit data if (.false.) if (l) ! { dg-error "Failed to match clause" } !$acc exit data if (i) ! { dg-error "LOGICAL" } !$acc exit data if (1) ! { dg-error "LOGICAL" } !$acc exit data if (a) ! { dg-error "LOGICAL" } diff --git a/gcc/testsuite/gfortran.dg/goacc/if.f95 b/gcc/testsuite/gfortran.dg/goacc/if.f95 index a45035d8230..35e9cfee134 100644 --- a/gcc/testsuite/gfortran.dg/goacc/if.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/if.f95 @@ -6,7 +6,7 @@ program test logical :: x integer :: i - !$acc parallel if ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel if ! { dg-error "Failed to match clause" } !$acc parallel if () ! { dg-error "Invalid character" } !$acc parallel if (i) ! { dg-error "scalar LOGICAL expression" } !$acc end parallel @@ -14,11 +14,11 @@ program test !$acc end parallel !$acc kernels if (i) ! { dg-error "scalar LOGICAL expression" } !$acc end kernels - !$acc kernels if ! { dg-error "Unclassifiable OpenACC directive" } + !$acc kernels if ! { dg-error "Failed to match clause" } !$acc kernels if () ! { dg-error "Invalid character" } !$acc kernels if (1) ! { dg-error "scalar LOGICAL expression" } !$acc end kernels - !$acc data if ! { dg-error "Unclassifiable OpenACC directive" } + !$acc data if ! { dg-error "Failed to match clause" } !$acc data if () ! { dg-error "Invalid character" } !$acc data if (i) ! { dg-error "scalar LOGICAL expression" } !$acc end data @@ -26,9 +26,9 @@ program test !$acc end data ! at most one if clause may appear - !$acc parallel if (.false.) if (.false.) { dg-error "Unclassifiable OpenACC directive" } - !$acc kernels if (.false.) if (.false.) { dg-error "Unclassifiable OpenACC directive" } - !$acc data if (.false.) if (.false.) { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel if (.false.) if (.false.) { dg-error "Failed to match clause" } + !$acc kernels if (.false.) if (.false.) { dg-error "Failed to match clause" } + !$acc data if (.false.) if (.false.) { dg-error "Failed to match clause" } !$acc parallel if (x) !$acc end parallel @@ -49,4 +49,4 @@ program test !$acc data if (i.gt.1) !$acc end data -end program test \ No newline at end of file +end program test diff --git a/gcc/testsuite/gfortran.dg/goacc/list.f95 b/gcc/testsuite/gfortran.dg/goacc/list.f95 index 87c84085b13..d2f4c5e88be 100644 --- a/gcc/testsuite/gfortran.dg/goacc/list.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/list.f95 @@ -24,7 +24,7 @@ program test !$acc parallel private (i) private (j) !$acc end parallel - !$acc parallel private ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel private ! { dg-error "Failed to match clause" } !$acc parallel private() ! { dg-error "Syntax error" } @@ -56,7 +56,7 @@ program test !$acc parallel firstprivate (i) firstprivate (j) !$acc end parallel - !$acc parallel firstprivate ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel firstprivate ! { dg-error "Failed to match clause" } !$acc parallel firstprivate() ! { dg-error "Syntax error" } @@ -91,7 +91,7 @@ program test !$acc host_data use_device (i) use_device (j) ! { dg-error "neither a POINTER nor an array" } !$acc end host_data - !$acc host_data use_device ! { dg-error "Unclassifiable OpenACC directive" } + !$acc host_data use_device ! { dg-error "Failed to match clause" } !$acc host_data use_device() ! { dg-error "Syntax error" } diff --git a/gcc/testsuite/gfortran.dg/goacc/literal.f95 b/gcc/testsuite/gfortran.dg/goacc/literal.f95 index e6760d04fa1..896749a46cb 100644 --- a/gcc/testsuite/gfortran.dg/goacc/literal.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/literal.f95 @@ -10,7 +10,7 @@ contains !$acc end data ! { dg-error "Unexpected" } !$acc data deviceptr (10) ! { dg-error "Syntax error" } !$acc end data ! { dg-error "Unexpected" } - !$acc data private (10) ! { dg-error "Unclassifiable" } + !$acc data private (10) ! { dg-error "Failed to match clause" } !$acc end data ! { dg-error "Unexpected" } !$acc host_data use_device (10) ! { dg-error "Syntax error" } !$acc end host_data ! { dg-error "Unexpected" } diff --git a/gcc/testsuite/gfortran.dg/goacc/loop-2-kernels-tile.f95 b/gcc/testsuite/gfortran.dg/goacc/loop-2-kernels-tile.f95 index 96e0ccbd2ac..afc8a278cac 100644 --- a/gcc/testsuite/gfortran.dg/goacc/loop-2-kernels-tile.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/loop-2-kernels-tile.f95 @@ -3,7 +3,7 @@ program test integer :: i, j !$acc kernels - !$acc loop tile ! { dg-error "Unclassifiable" } + !$acc loop tile ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc loop tile() ! { dg-error "Syntax error" } @@ -65,7 +65,7 @@ program test ENDDO !$acc end kernels - !$acc kernels loop tile ! { dg-error "Unclassifiable" } + !$acc kernels loop tile ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc kernels loop tile() ! { dg-error "Syntax error" } diff --git a/gcc/testsuite/gfortran.dg/goacc/loop-2-parallel-tile.f95 b/gcc/testsuite/gfortran.dg/goacc/loop-2-parallel-tile.f95 index 3a4db5dc1af..4bfca748f75 100644 --- a/gcc/testsuite/gfortran.dg/goacc/loop-2-parallel-tile.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/loop-2-parallel-tile.f95 @@ -3,7 +3,7 @@ program test integer :: i, j !$acc parallel - !$acc loop tile ! { dg-error "Unclassifiable" } + !$acc loop tile ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc loop tile() ! { dg-error "Syntax error" } @@ -56,7 +56,7 @@ program test ENDDO !$acc end parallel - !$acc parallel loop tile ! { dg-error "Unclassifiable" } + !$acc parallel loop tile ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc parallel loop tile() ! { dg-error "Syntax error" } diff --git a/gcc/testsuite/gfortran.dg/goacc/loop-7.f95 b/gcc/testsuite/gfortran.dg/goacc/loop-7.f95 index 9ca8297d81a..37d50d3b82b 100644 --- a/gcc/testsuite/gfortran.dg/goacc/loop-7.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/loop-7.f95 @@ -30,13 +30,13 @@ program test !$acc loop gang(num:num, static:1) DO i = 1,10 ENDDO - !$acc loop gang(static:*, num:5, static:5) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop gang(static:*, num:5, static:5) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO - !$acc loop gang(1, num:2, static:3) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop gang(1, num:2, static:3) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO - !$acc loop gang(num:num static:1) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop gang(num:num static:1) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc loop gang(num) @@ -45,7 +45,7 @@ program test !$acc loop gang(num:num+1, static:1+num) DO i = 1,10 ENDDO - !$acc loop gang(length:num) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop gang(length:num) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO @@ -58,19 +58,19 @@ program test !$acc loop worker (num) DO i = 1,10 ENDDO - !$acc loop worker (static:num) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop worker (static:num) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc loop worker (num:,) ! { dg-error "Invalid character" } DO i = 1,10 ENDDO - !$acc loop worker (num:num:num) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop worker (num:num:num) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc loop worker (num:num*num) DO i = 1,10 ENDDO - !$acc loop worker (length:num*num) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop worker (length:num*num) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc loop worker (num:*) ! { dg-error "Invalid character" } @@ -89,13 +89,13 @@ program test !$acc loop vector (length) DO i = 1,10 ENDDO - !$acc loop vrctor (static:num) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop vrctor (static:num) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc loop vector (length:,) ! { dg-error "Invalid character" } DO i = 1,10 ENDDO - !$acc loop vector (length:num:num) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop vector (length:num:num) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc loop vector (length:static*num) @@ -107,7 +107,7 @@ program test !$acc loop vector (length:32) DO i = 1,10 ENDDO - !$acc loop vector (num:num*num) ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop vector (num:num*num) ! { dg-error "Failed to match clause" } DO i = 1,10 ENDDO !$acc loop vector (length:*) ! { dg-error "Invalid character" } diff --git a/gcc/testsuite/gfortran.dg/goacc/parallel-kernels-clauses.f95 b/gcc/testsuite/gfortran.dg/goacc/parallel-kernels-clauses.f95 index c37208c7e6f..72ba147565b 100644 --- a/gcc/testsuite/gfortran.dg/goacc/parallel-kernels-clauses.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/parallel-kernels-clauses.f95 @@ -16,8 +16,8 @@ program test !$acc parallel async(i) !$acc end parallel - !$acc kernels async(0, 1) { dg-error "Unclassifiable" } - !$acc parallel async(0, 1) { dg-error "Unclassifiable" } + !$acc kernels async(0, 1) { dg-error "Failed to match clause" } + !$acc parallel async(0, 1) { dg-error "Failed to match clause" } !$acc kernels async !$acc end kernels @@ -37,11 +37,11 @@ program test !$acc kernels async() { dg-error "Invalid character" } !$acc parallel async() { dg-error "Invalid character" } - !$acc kernels async("a") { dg-error "Unclassifiable" } - !$acc parallel async("a") { dg-error "Unclassifiable" } + !$acc kernels async("a") { dg-error "Failed to match clause" } + !$acc parallel async("a") { dg-error "Failed to match clause" } - !$acc kernels async(.true.) { dg-error "Unclassifiable" } - !$acc parallel async(.true.) { dg-error "Unclassifiable" } + !$acc kernels async(.true.) { dg-error "Failed to match clause" } + !$acc parallel async(.true.) { dg-error "Failed to match clause" } ! default(none) !$acc kernels default(none) @@ -59,17 +59,17 @@ program test !$acc parallel default ( none ) !$acc end parallel - !$acc kernels default { dg-error "Unclassifiable" } - !$acc parallel default { dg-error "Unclassifiable" } + !$acc kernels default { dg-error "Failed to match clause" } + !$acc parallel default { dg-error "Failed to match clause" } - !$acc kernels default() { dg-error "Unclassifiable" } - !$acc parallel default() { dg-error "Unclassifiable" } + !$acc kernels default() { dg-error "Failed to match clause" } + !$acc parallel default() { dg-error "Failed to match clause" } - !$acc kernels default(i) { dg-error "Unclassifiable" } - !$acc parallel default(i) { dg-error "Unclassifiable" } + !$acc kernels default(i) { dg-error "Failed to match clause" } + !$acc parallel default(i) { dg-error "Failed to match clause" } - !$acc kernels default(1) { dg-error "Unclassifiable" } - !$acc parallel default(1) { dg-error "Unclassifiable" } + !$acc kernels default(1) { dg-error "Failed to match clause" } + !$acc parallel default(1) { dg-error "Failed to match clause" } ! Wait !$acc kernels wait (l) ! { dg-error "INTEGER" } diff --git a/gcc/testsuite/gfortran.dg/goacc/routine-6.f90 b/gcc/testsuite/gfortran.dg/goacc/routine-6.f90 index cdf643ff44c..f1e2aa3c3c3 100644 --- a/gcc/testsuite/gfortran.dg/goacc/routine-6.f90 +++ b/gcc/testsuite/gfortran.dg/goacc/routine-6.f90 @@ -108,7 +108,7 @@ subroutine subr4 (x) end subroutine subr4 subroutine subr10 (x) - !$acc routine (subr10) device ! { dg-error "Unclassifiable OpenACC directive" } + !$acc routine (subr10) device ! { dg-error "Failed to match clause" } integer, intent(inout) :: x if (x < 1) then x = 1 diff --git a/gcc/testsuite/gfortran.dg/goacc/several-directives.f95 b/gcc/testsuite/gfortran.dg/goacc/several-directives.f95 index 8fb97b53d38..e7610be69d9 100644 --- a/gcc/testsuite/gfortran.dg/goacc/several-directives.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/several-directives.f95 @@ -2,5 +2,5 @@ program test ! only one directive-name may appear in directive - !$acc parallel kernels ! { dg-error "Unclassifiable OpenACC directive" } -end \ No newline at end of file + !$acc parallel kernels ! { dg-error "Failed to match clause" } +end diff --git a/gcc/testsuite/gfortran.dg/goacc/sie.f95 b/gcc/testsuite/gfortran.dg/goacc/sie.f95 index abfe28bc533..194a1daae5f 100644 --- a/gcc/testsuite/gfortran.dg/goacc/sie.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/sie.f95 @@ -67,7 +67,7 @@ program test !$acc end kernels - !$acc parallel num_gangs ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel num_gangs ! { dg-error "Failed to match clause" } !$acc parallel num_gangs(3) !$acc end parallel @@ -95,7 +95,7 @@ program test !$acc parallel num_gangs("1") ! { dg-error "scalar INTEGER expression" } !$acc end parallel - !$acc kernels num_gangs ! { dg-error "Unclassifiable OpenACC directive" } + !$acc kernels num_gangs ! { dg-error "Failed to match clause" } !$acc kernels num_gangs(3) !$acc end kernels @@ -124,7 +124,7 @@ program test !$acc end kernels - !$acc parallel num_workers ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel num_workers ! { dg-error "Failed to match clause" } !$acc parallel num_workers(3) !$acc end parallel @@ -152,7 +152,7 @@ program test !$acc parallel num_workers("1") ! { dg-error "scalar INTEGER expression" } !$acc end parallel - !$acc kernels num_workers ! { dg-error "Unclassifiable OpenACC directive" } + !$acc kernels num_workers ! { dg-error "Failed to match clause" } !$acc kernels num_workers(3) !$acc end kernels @@ -181,7 +181,7 @@ program test !$acc end kernels - !$acc parallel vector_length ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel vector_length ! { dg-error "Failed to match clause" } !$acc parallel vector_length(3) !$acc end parallel @@ -209,7 +209,7 @@ program test !$acc parallel vector_length("1") ! { dg-error "scalar INTEGER expression" } !$acc end parallel - !$acc kernels vector_length ! { dg-error "Unclassifiable OpenACC directive" } + !$acc kernels vector_length ! { dg-error "Failed to match clause" } !$acc kernels vector_length(3) !$acc end kernels diff --git a/gcc/testsuite/gfortran.dg/goacc/tile-1.f90 b/gcc/testsuite/gfortran.dg/goacc/tile-1.f90 index 3dbabda0342..f609b127df9 100644 --- a/gcc/testsuite/gfortran.dg/goacc/tile-1.f90 +++ b/gcc/testsuite/gfortran.dg/goacc/tile-1.f90 @@ -24,7 +24,7 @@ subroutine parloop end do end do - !$acc parallel loop tile ! { dg-error "Unclassifiable" } + !$acc parallel loop tile ! { dg-error "Failed to match clause" } do i = 1, n end do @@ -92,7 +92,7 @@ subroutine par integer i, j, k !$acc parallel - !$acc loop tile ! { dg-error "Unclassifiable" } + !$acc loop tile ! { dg-error "Failed to match clause" } do i = 1, n end do @@ -173,7 +173,7 @@ subroutine kern integer i, j, k !$acc kernels - !$acc loop tile ! { dg-error "Unclassifiable" } + !$acc loop tile ! { dg-error "Failed to match clause" } do i = 1, n end do @@ -275,7 +275,7 @@ subroutine kernsloop end do end do - !$acc kernels loop tile ! { dg-error "Unclassifiable" } + !$acc kernels loop tile ! { dg-error "Failed to match clause" } do i = 1, n end do diff --git a/gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90 b/gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90 index e73c2dc0875..bf8b319a78e 100644 --- a/gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90 +++ b/gcc/testsuite/gfortran.dg/goacc/update-if_present-2.f90 @@ -2,7 +2,7 @@ subroutine t1 implicit none - !$acc routine gang if_present ! { dg-error "Unclassifiable OpenACC directive" } + !$acc routine gang if_present ! { dg-error "Failed to match clause" } integer a, b, c(10) real, allocatable :: x, y, z(:) @@ -12,10 +12,10 @@ subroutine t1 allocate (x, y, z(100)) - !$acc enter data copyin(a) if_present ! { dg-error "Unclassifiable OpenACC directive" } - !$acc exit data copyout(a) if_present ! { dg-error "Unclassifiable OpenACC directive" } + !$acc enter data copyin(a) if_present ! { dg-error "Failed to match clause" } + !$acc exit data copyout(a) if_present ! { dg-error "Failed to match clause" } - !$acc data copy(a) if_present ! { dg-error "Unclassifiable OpenACC directive" } + !$acc data copy(a) if_present ! { dg-error "Failed to match clause" } !$acc end data ! { dg-error "Unexpected ..ACC END DATA statement" } !$acc declare link(a) if_present ! { dg-error "Unexpected junk after" } @@ -23,7 +23,7 @@ subroutine t1 !$acc init if_present ! { dg-error "Unclassifiable OpenACC directive" } !$acc shutdown if_present ! { dg-error "Unclassifiable OpenACC directive" } - !$acc update self(a) device_type(nvidia) device(b) if_present ! { dg-error "Unclassifiable OpenACC directive" } + !$acc update self(a) device_type(nvidia) device(b) if_present ! { dg-error "Failed to match clause" } end subroutine t1 subroutine t2 @@ -35,17 +35,17 @@ subroutine t2 c(:) = -1 !$acc parallel - !$acc loop if_present ! { dg-error "Unclassifiable OpenACC directive" } + !$acc loop if_present ! { dg-error "Failed to match clause" } do b = 1, 10 end do !$acc end parallel - !$acc kernels loop if_present ! { dg-error "Unclassifiable OpenACC directive" } + !$acc kernels loop if_present ! { dg-error "Failed to match clause" } do b = 1, 10 end do !$acc end kernels loop ! { dg-error "Unexpected ..ACC END KERNELS LOOP statement" } - !$acc parallel loop if_present ! { dg-error "Unclassifiable OpenACC directive" } + !$acc parallel loop if_present ! { dg-error "Failed to match clause" } do b = 1, 10 end do !$acc end parallel loop ! { dg-error "Unexpected ..ACC END PARALLEL LOOP statement" } diff --git a/gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90 b/gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90 index d6ae7c9c812..40169d38da4 100644 --- a/gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90 +++ b/gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90 @@ -2,7 +2,7 @@ subroutine fn1 (x) integer :: x -!$omp declare simd (fn1) inbranch notinbranch uniform (x) ! { dg-error "Unclassifiable OpenMP directive" } +!$omp declare simd (fn1) inbranch notinbranch uniform (x) ! { dg-error "Failed to match clause" } end subroutine fn1 subroutine fn2 (x) !$omp declare simd (fn100) ! { dg-error "should refer to containing procedure" } diff --git a/gcc/testsuite/gfortran.dg/gomp/pr29759.f90 b/gcc/testsuite/gfortran.dg/gomp/pr29759.f90 index 39c59c5e0ff..1b1f379522c 100644 --- a/gcc/testsuite/gfortran.dg/gomp/pr29759.f90 +++ b/gcc/testsuite/gfortran.dg/gomp/pr29759.f90 @@ -21,20 +21,20 @@ PROGRAM test_omp !$OMP END PARALLEL -!$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" } +!$OMP PARALLEL & ! { dg-error "Failed to match clause" } !$ NUM_THREADS(2) !$OMP END PARALLEL ! { dg-error "Unexpected" } -!$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" } +!$OMP PARALLEL & ! { dg-error "Failed to match clause" } !$ & NUM_THREADS(2) ! { dg-error "Invalid character" } !$OMP END PARALLEL ! { dg-error "Unexpected" } -!$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" } +!$OMP PARALLEL & ! { dg-error "Failed to match clause" } ! !$ NUM_THREADS(2) !$OMP END PARALLEL ! { dg-error "Unexpected" } -!$OMP PARALLEL & ! { dg-error "Unclassifiable OpenMP" } +!$OMP PARALLEL & ! { dg-error "Failed to match clause" } ! !$ & NUM_THREADS(2) ! { dg-error "Invalid character" } !$OMP END PARALLEL ! { dg-error "Unexpected" } -- 2.30.2