Hello Jakub,

Indeed, I also found this out and had been working on fixing it. Thanks
again for noticing,
and for the quick patch. Sorry about the breakage.

Regards,
supers1ngular

On Thu, Dec 11, 2025 at 12:36 PM Jakub Jelinek <[email protected]> wrote:

> 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
>
>

Reply via email to