Hi! The recent -Wdeprecated-openmp changes broke various tests.
This patch limits the - reduction diagnostics to OpenMP, as the code is used by OpenACC and even if OpenACC deprecates it, it should be changed independently and not mention OpenMP versions in that case. The rest are just testsuite tweaks to make stuff pass, sometimes adding -Wno-deprecated-openmp, in other cases using newer syntax. Note, I think gfortran.dg/goacc/pr93329.f90 test should be probably moved into the gfortran.dg/goacc-gomp/ subdirectory where other tests which test -fopenmp -fopenacc interaction are. Tested on x86_64-linux, committed to trunk. 2025-12-11 Jakub Jelinek <[email protected]> PR testsuite/123098 gcc/c/ * c-parser.cc (c_parser_omp_clause_reduction): Only emit -Wdeprecated-openmp warning for CPP_MINUS if is_omp. gcc/cp/ * parser.cc (cp_parser_omp_clause_reduction): Only emit -Wdeprecated-openmp warning for CPP_MINUS if is_omp. gcc/fortran/ * openmp.cc (gfc_match_omp_clause_reduction): Only emit -Wdeprecated-openmp warning for '-' if !openacc. gcc/testsuite/ * gcc.dg/vect/vect-simd-clone-15.c (foo): Use OpenMP 5.2 syntax for linear clause. * g++.dg/vect/simd-clone-6.cc (foo): Likewise. * c-c++-common/goacc-gomp/pr93465-1.c: Use #pragma omp begin declare target instead of #pragma omp declare target. * c-c++-common/goacc-gomp/nesting-fail-1.c: Use #pragma omp masked instead of #pragma omp master. * gfortran.dg/goacc-gomp/pr102330-1.f90 (r1): Use !$omp masked taskloop simd instead of !$omp master taskloop simd. * gfortran.dg/vect/pr86421.f90 (foo): Use OpenMP 5.2 syntax for linear clause. * gfortran.dg/gomp/allocate-16.f90: Use \\\$ instead of $ in dg-error and use relative line numbers instead of absolute. * gfortran.dg/gomp/groupprivate-2.f90: Add -Wno-deprecated-openmp to dg-additional-options. * gfortran.dg/gomp/groupprivate-5.f90: Likewise. * gfortran.dg/goacc/pr93329.f90: Likewise. --- gcc/c/c-parser.cc.jj 2025-12-11 20:47:30.583567215 +0100 +++ gcc/c/c-parser.cc 2025-12-11 21:01:55.409679883 +0100 @@ -18849,10 +18849,11 @@ c_parser_omp_clause_reduction (c_parser code = MULT_EXPR; break; case CPP_MINUS: - warning_at (c_parser_peek_token (parser)->location, - OPT_Wdeprecated_openmp, - "%<-%> operator for reductions deprecated in " - "OpenMP 5.2"); + if (is_omp) + warning_at (c_parser_peek_token (parser)->location, + OPT_Wdeprecated_openmp, + "%<-%> operator for reductions deprecated in " + "OpenMP 5.2"); code = MINUS_EXPR; break; case CPP_AND: --- gcc/cp/parser.cc.jj 2025-12-11 20:47:30.589567112 +0100 +++ gcc/cp/parser.cc 2025-12-11 21:00:52.908755794 +0100 @@ -42165,9 +42165,10 @@ cp_parser_omp_clause_reduction (cp_parse case CPP_PLUS: code = PLUS_EXPR; break; case CPP_MULT: code = MULT_EXPR; break; case CPP_MINUS: - warning_at (cp_lexer_peek_token (parser->lexer)->location, - OPT_Wdeprecated_openmp, - "%<-%> operator for reductions deprecated in OpenMP 5.2"); + if (is_omp) + warning_at (cp_lexer_peek_token (parser->lexer)->location, + OPT_Wdeprecated_openmp, + "%<-%> operator for reductions deprecated in OpenMP 5.2"); code = MINUS_EXPR; break; case CPP_AND: code = BIT_AND_EXPR; break; --- gcc/fortran/openmp.cc.jj 2025-12-11 20:47:30.591641467 +0100 +++ gcc/fortran/openmp.cc 2025-12-11 21:01:32.879067732 +0100 @@ -1495,9 +1495,10 @@ gfc_match_omp_clause_reduction (char pc, rop = OMP_REDUCTION_TIMES; else if (gfc_match_char ('-') == MATCH_YES) { - gfc_warning (OPT_Wdeprecated_openmp, - "%<-%> operator at %C for reductions deprecated in " - "OpenMP 5.2"); + if (!openacc) + gfc_warning (OPT_Wdeprecated_openmp, + "%<-%> operator at %C for reductions deprecated in " + "OpenMP 5.2"); rop = OMP_REDUCTION_MINUS; } else if (gfc_match (".and.") == MATCH_YES) --- gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c.jj 2023-08-08 15:55:08.887131113 +0200 +++ gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c 2025-12-11 21:17:17.955800636 +0100 @@ -10,7 +10,7 @@ int array[N]; -#pragma omp declare simd linear(val(b):-3), notinbranch +#pragma omp declare simd linear(b: val, step (-3)), notinbranch __attribute__((noinline)) int foo (int a, int b) { --- gcc/testsuite/g++.dg/vect/simd-clone-6.cc.jj 2023-08-08 15:55:08.503136490 +0200 +++ gcc/testsuite/g++.dg/vect/simd-clone-6.cc 2025-12-11 21:18:06.004973858 +0100 @@ -10,7 +10,7 @@ struct S { int a; }; int c[N], e[N], f[N]; S d[N]; -#pragma omp declare simd linear(ref(b, c) : 1) +#pragma omp declare simd linear(b, c : ref, step (1)) int foo (int a, S &b, int &c) { --- gcc/testsuite/c-c++-common/goacc-gomp/pr93465-1.c.jj 2020-04-11 07:31:25.341439343 +0200 +++ gcc/testsuite/c-c++-common/goacc-gomp/pr93465-1.c 2025-12-11 20:52:34.962327582 +0100 @@ -1,9 +1,9 @@ -#pragma omp declare target +#pragma omp begin declare target #pragma acc routine seq /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f1\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ void f1 (void) {} #pragma omp end declare target -#pragma omp declare target +#pragma omp begin declare target void f1 (void); #pragma acc routine seq /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f1\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ @@ -11,12 +11,12 @@ void f1 (void); -#pragma omp declare target +#pragma omp begin declare target #pragma acc routine /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f2\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ extern void f2 (void); #pragma omp end declare target -#pragma omp declare target +#pragma omp begin declare target extern void f2 (void); #pragma omp end declare target @@ -24,12 +24,12 @@ extern void f2 (void); extern void f2 (void); -#pragma omp declare target +#pragma omp begin declare target #pragma acc routine gang /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f3\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ void f3 (void); #pragma omp end declare target -#pragma omp declare target +#pragma omp begin declare target void f3 (void) {} #pragma omp end declare target @@ -37,13 +37,13 @@ void f3 (void) {} /* Surprisingly, this diagnosis also works for '#pragma acc routine' first, - followed by '#pragma omp declare target'; the latter gets applied first. */ + followed by '#pragma omp begin declare target'; the latter gets applied first. */ #pragma acc routine /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f4\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ extern void f4 (void); -#pragma omp declare target +#pragma omp begin declare target extern void f4 (void); #pragma omp end declare target @@ -51,6 +51,6 @@ extern void f4 (void); #pragma acc routine gang /* { dg-error "cannot apply '#pragma acc routine' to '\(void \)?f5\(\\(\\)\)?', which has also been marked with an OpenMP 'declare target' directive" } */ void f5 (void) {} -#pragma omp declare target +#pragma omp begin declare target extern void f5 (void); #pragma omp end declare target --- gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c.jj 2025-04-08 14:09:00.472153499 +0200 +++ gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c 2025-12-11 20:51:46.019170101 +0100 @@ -118,7 +118,7 @@ f_omp (void) ; } -#pragma omp master +#pragma omp masked { #pragma acc parallel /* { dg-error "OpenACC construct inside of non-OpenACC region" } */ ; @@ -229,7 +229,7 @@ f_acc_parallel (void) #pragma acc parallel { -#pragma omp master /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ +#pragma omp masked /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ ; } @@ -293,7 +293,7 @@ f_acc_kernels (void) #pragma acc kernels { -#pragma omp master /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ +#pragma omp masked /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ ; } @@ -357,7 +357,7 @@ f_acc_serial (void) #pragma acc serial { -#pragma omp master /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ +#pragma omp masked /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ ; } @@ -421,7 +421,7 @@ f_acc_data (void) #pragma acc data { -#pragma omp master /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ +#pragma omp masked /* { dg-error "non-OpenACC construct inside of OpenACC region" } */ ; } @@ -492,7 +492,7 @@ f_acc_loop (void) #pragma acc loop for (i = 0; i < 2; ++i) { -#pragma omp master /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */ +#pragma omp masked /* { dg-error "non-OpenACC construct inside of OpenACC routine" } */ ; } --- gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90.jj 2022-03-10 15:27:49.724459888 +0100 +++ gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90 2025-12-11 20:54:14.794609043 +0100 @@ -3,7 +3,7 @@ ! { dg-additional-options --param=openacc-privatization=noisy } subroutine r1 - !$omp master taskloop simd + !$omp masked taskloop simd do i = 1, 8 end do !$acc parallel loop ! { dg-line l_compute1 } --- gcc/testsuite/gfortran.dg/vect/pr86421.f90.jj 2020-01-12 11:54:38.325384562 +0100 +++ gcc/testsuite/gfortran.dg/vect/pr86421.f90 2025-12-11 21:19:00.035044165 +0100 @@ -9,7 +9,7 @@ contains subroutine foo(x, y, z) real :: x integer :: y, z - !$omp declare simd linear(ref(x)) linear(val(y)) linear(uval(z)) + !$omp declare simd linear(x : ref) linear(y : val) linear(z : uval) x = x + y z = z + 1 end subroutine --- gcc/testsuite/gfortran.dg/gomp/allocate-16.f90.jj 2025-12-11 19:33:58.243477441 +0100 +++ gcc/testsuite/gfortran.dg/gomp/allocate-16.f90 2025-12-11 21:10:03.820272231 +0100 @@ -6,6 +6,6 @@ integer, pointer :: ptr allocate(ptr) end -! { dg-error "'!$OMP ALLOCATE' at .1. requires '-fopenmp-allocators'" "" { target *-*-* } 4 } -! { dg-warning "All files that might deallocate such a variable must be compiled with '-fopenmp-allocators'" "" { target *-*-* } 4 } +! { dg-error "'!\\\$OMP ALLOCATE' at .1. requires '-fopenmp-allocators'" "" { target *-*-* } .-4 } +! { dg-warning "All files that might deallocate such a variable must be compiled with '-fopenmp-allocators'" "" { target *-*-* } .-5 } ! { dg-note "This includes explicit DEALLOCATE, reallocation on intrinsic assignment, INTENT\\(OUT\\) for allocatable dummy arguments, and reallocation of allocatable components allocated with an OpenMP allocator" "" { target *-*-* } 0 } --- gcc/testsuite/gfortran.dg/gomp/groupprivate-2.f90.jj 2025-11-27 09:39:57.636356609 +0100 +++ gcc/testsuite/gfortran.dg/gomp/groupprivate-2.f90 2025-12-11 20:55:58.422825164 +0100 @@ -1,3 +1,5 @@ +! { dg-additional-options "-Wno-deprecated-openmp" } + module m implicit none integer :: ii --- gcc/testsuite/gfortran.dg/gomp/groupprivate-5.f90.jj 2025-11-27 09:39:57.636356609 +0100 +++ gcc/testsuite/gfortran.dg/gomp/groupprivate-5.f90 2025-12-11 20:55:45.995039098 +0100 @@ -1,3 +1,5 @@ +! { dg-additional-options "-Wno-deprecated-openmp" } + module m implicit none integer :: ii --- gcc/testsuite/gfortran.dg/goacc/pr93329.f90.jj 2020-01-22 09:53:38.340614580 +0100 +++ gcc/testsuite/gfortran.dg/goacc/pr93329.f90 2025-12-11 21:04:52.618629349 +0100 @@ -1,6 +1,6 @@ ! PR fortran/93329 ! { dg-do compile { target fopenmp } } -! { dg-additional-options "-fopenmp" } +! { dg-additional-options "-fopenmp -Wno-deprecated-openmp" } integer :: x, y, z integer :: a(32) Jakub
