https://gcc.gnu.org/g:9c119b0fdd9ba5a6821c0b4c5874ade8f4969109

commit r16-6041-g9c119b0fdd9ba5a6821c0b4c5874ade8f4969109
Author: Jakub Jelinek <[email protected]>
Date:   Thu Dec 11 21:29:32 2025 +0100

    openmp: Limit - reduction -Wdeprecated-openmp diagnostics to OpenMP, 
testsuite fixes [PR123098]
    
    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.
    
    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.

Diff:
---
 gcc/c/c-parser.cc                                      |  9 +++++----
 gcc/cp/parser.cc                                       |  7 ++++---
 gcc/fortran/openmp.cc                                  |  7 ++++---
 gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c | 12 ++++++------
 gcc/testsuite/c-c++-common/goacc-gomp/pr93465-1.c      | 18 +++++++++---------
 gcc/testsuite/g++.dg/vect/simd-clone-6.cc              |  2 +-
 gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c         |  2 +-
 gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90    |  2 +-
 gcc/testsuite/gfortran.dg/goacc/pr93329.f90            |  2 +-
 gcc/testsuite/gfortran.dg/gomp/allocate-16.f90         |  4 ++--
 gcc/testsuite/gfortran.dg/gomp/groupprivate-2.f90      |  2 ++
 gcc/testsuite/gfortran.dg/gomp/groupprivate-5.f90      |  2 ++
 gcc/testsuite/gfortran.dg/vect/pr86421.f90             |  2 +-
 13 files changed, 39 insertions(+), 32 deletions(-)

diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc
index 284059f5ec0b..abe024c84b39 100644
--- a/gcc/c/c-parser.cc
+++ b/gcc/c/c-parser.cc
@@ -18849,10 +18849,11 @@ c_parser_omp_clause_reduction (c_parser *parser, enum 
omp_clause_code kind,
          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:
diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
index d9a4b6e1a0c8..50a03a3d7973 100644
--- a/gcc/cp/parser.cc
+++ b/gcc/cp/parser.cc
@@ -42165,9 +42165,10 @@ cp_parser_omp_clause_reduction (cp_parser *parser, 
enum omp_clause_code kind,
     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;
diff --git a/gcc/fortran/openmp.cc b/gcc/fortran/openmp.cc
index 3150686cddee..31534ea0393a 100644
--- a/gcc/fortran/openmp.cc
+++ b/gcc/fortran/openmp.cc
@@ -1495,9 +1495,10 @@ gfc_match_omp_clause_reduction (char pc, gfc_omp_clauses 
*c, bool openacc,
     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)
diff --git a/gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c 
b/gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c
index 740e164ea9ca..5925fd2abcd0 100644
--- a/gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c
+++ b/gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c
@@ -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" } */
       ;
     }
 
diff --git a/gcc/testsuite/c-c++-common/goacc-gomp/pr93465-1.c 
b/gcc/testsuite/c-c++-common/goacc-gomp/pr93465-1.c
index c8b9135d9973..d5cd66114b23 100644
--- a/gcc/testsuite/c-c++-common/goacc-gomp/pr93465-1.c
+++ b/gcc/testsuite/c-c++-common/goacc-gomp/pr93465-1.c
@@ -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
diff --git a/gcc/testsuite/g++.dg/vect/simd-clone-6.cc 
b/gcc/testsuite/g++.dg/vect/simd-clone-6.cc
index 2d9bb62555ff..a5e6b5d6c30a 100644
--- a/gcc/testsuite/g++.dg/vect/simd-clone-6.cc
+++ b/gcc/testsuite/g++.dg/vect/simd-clone-6.cc
@@ -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)
 {
diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c 
b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c
index 866f1000f340..a6c9d9c9a891 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c
@@ -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)
 {
diff --git a/gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90 
b/gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90
index 025bcbf881ef..7b0e07fb623c 100644
--- a/gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90
+++ b/gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90
@@ -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 }
diff --git a/gcc/testsuite/gfortran.dg/goacc/pr93329.f90 
b/gcc/testsuite/gfortran.dg/goacc/pr93329.f90
index b2d25bda88b3..cf9c5560b701 100644
--- a/gcc/testsuite/gfortran.dg/goacc/pr93329.f90
+++ b/gcc/testsuite/gfortran.dg/goacc/pr93329.f90
@@ -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)
diff --git a/gcc/testsuite/gfortran.dg/gomp/allocate-16.f90 
b/gcc/testsuite/gfortran.dg/gomp/allocate-16.f90
index 6bba4536e4b9..0e3a57d64eba 100644
--- a/gcc/testsuite/gfortran.dg/gomp/allocate-16.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/allocate-16.f90
@@ -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 }
diff --git a/gcc/testsuite/gfortran.dg/gomp/groupprivate-2.f90 
b/gcc/testsuite/gfortran.dg/gomp/groupprivate-2.f90
index 922d229bf89f..2e921ae542fa 100644
--- a/gcc/testsuite/gfortran.dg/gomp/groupprivate-2.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/groupprivate-2.f90
@@ -1,3 +1,5 @@
+! { dg-additional-options "-Wno-deprecated-openmp" }
+
 module m
  implicit none
  integer :: ii
diff --git a/gcc/testsuite/gfortran.dg/gomp/groupprivate-5.f90 
b/gcc/testsuite/gfortran.dg/gomp/groupprivate-5.f90
index c9f89feb4aa5..edc0945169f3 100644
--- a/gcc/testsuite/gfortran.dg/gomp/groupprivate-5.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/groupprivate-5.f90
@@ -1,3 +1,5 @@
+! { dg-additional-options "-Wno-deprecated-openmp" }
+
 module m
  implicit none
  integer :: ii
diff --git a/gcc/testsuite/gfortran.dg/vect/pr86421.f90 
b/gcc/testsuite/gfortran.dg/vect/pr86421.f90
index af40f40da9e1..d539e0b271ca 100644
--- a/gcc/testsuite/gfortran.dg/vect/pr86421.f90
+++ b/gcc/testsuite/gfortran.dg/vect/pr86421.f90
@@ -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

Reply via email to