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