]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
openmp: Limit - reduction -Wdeprecated-openmp diagnostics to OpenMP, testsuite fixes...
authorJakub Jelinek <jakub@redhat.com>
Thu, 11 Dec 2025 20:29:32 +0000 (21:29 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 11 Dec 2025 20:29:32 +0000 (21:29 +0100)
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  <jakub@redhat.com>

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.

13 files changed:
gcc/c/c-parser.cc
gcc/cp/parser.cc
gcc/fortran/openmp.cc
gcc/testsuite/c-c++-common/goacc-gomp/nesting-fail-1.c
gcc/testsuite/c-c++-common/goacc-gomp/pr93465-1.c
gcc/testsuite/g++.dg/vect/simd-clone-6.cc
gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c
gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90
gcc/testsuite/gfortran.dg/goacc/pr93329.f90
gcc/testsuite/gfortran.dg/gomp/allocate-16.f90
gcc/testsuite/gfortran.dg/gomp/groupprivate-2.f90
gcc/testsuite/gfortran.dg/gomp/groupprivate-5.f90
gcc/testsuite/gfortran.dg/vect/pr86421.f90

index 284059f5ec0bbca3b4d26550cd4b435fd0d5ce25..abe024c84b39ebb00b907bebc4db759d137a88f6 100644 (file)
@@ -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:
index d9a4b6e1a0c8d22d6c54faf859ced2b128a8bb72..50a03a3d79739a898d6ce1557686bcdaeef805c7 100644 (file)
@@ -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;
index 3150686cddee61652d70516407f7bb8f8e739cba..31534ea0393a71d98bf4d95ef3e562529eb92a29 100644 (file)
@@ -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)
index 740e164ea9cad4f6f4d853da0207ec59ba7e2a7f..5925fd2abcd0ad08fbbfddbd22dbfdc02164e245 100644 (file)
@@ -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" } */
       ;
     }
 
index c8b9135d9973bea3cb696dd089eef33df6cb8df3..d5cd66114b2303902927f0407dafd44a105593d6 100644 (file)
@@ -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
index 2d9bb62555ff6c9473db2d1b754aed0123f2cb62..a5e6b5d6c30acfea0a232123ad54fe2c95ecc7d4 100644 (file)
@@ -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)
 {
index 866f1000f34098fb578001395f4a35e29cc8c0af..a6c9d9c9a89116fd23945e22290b205724a154c2 100644 (file)
@@ -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)
 {
index 025bcbf881ef99efc377bb01e106ce2e419423b6..7b0e07fb623c8a266ef1e1b417065321fa5cdec9 100644 (file)
@@ -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 }
index b2d25bda88b3abf8af4d8740b4af694f3f3be999..cf9c5560b701db64fb44e3c6f91a00adec115e39 100644 (file)
@@ -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)
index 6bba4536e4b92c6265778d77f0fc4b2abf2d783b..0e3a57d64ebaff64e5da1e9377ce8dfce1391179 100644 (file)
@@ -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 }
index 922d229bf89f9f28dd6bf5b56b3ce16bc282203f..2e921ae542fab279dedfd1fa0006e34fcc236bce 100644 (file)
@@ -1,3 +1,5 @@
+! { dg-additional-options "-Wno-deprecated-openmp" }
+
 module m
  implicit none
  integer :: ii
index c9f89feb4aa57fd3bbfc6f1de7d171edd1d3753f..edc0945169f3a1b2646131b105143371b89baed3 100644 (file)
@@ -1,3 +1,5 @@
+! { dg-additional-options "-Wno-deprecated-openmp" }
+
 module m
  implicit none
  integer :: ii
index af40f40da9e158a0efd0dfa6c8ede043c9130306..d539e0b271caf785fc7758cfe352be0513675e3f 100644 (file)
@@ -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