This patch LGTM.

Likewise 'LGTM' are patches 1/4 and 2/4, in line with my previous
comments. (Those are unchanged to previous round.)

Thanks for the patches!

I still have to look at 3/4, which is large and did see some changes
between v2 and v3. (Overall they seem to be really nice!)

Tobias

On 07.12.23 16:52, Sandra Loosemore wrote:
This patch adds "hpe" to the known properties for the "vendor" selector,
and support for "acquire" and "release" for "atomic_default_mem_order".

gcc/ChangeLog
      * omp-general.cc (vendor_properties): Add "hpe".
      (atomic_default_mem_order_properties): Add "acquire" and "release".
      (omp_context_selector_matches): Handle "acquire" and "release".

gcc/testsuite/ChangeLog
      * c-c++-common/gomp/declare-variant-2.c: Don't expect error on
      "acquire" and "release".
      * gfortran.dg/gomp/declare-variant-2a.f90: Likewise.
---
  gcc/omp-general.cc                                    | 10 ++++++++--
  gcc/testsuite/c-c++-common/gomp/declare-variant-2.c   |  4 ++--
  gcc/testsuite/gfortran.dg/gomp/declare-variant-2a.f90 |  4 ++--
  3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/gcc/omp-general.cc b/gcc/omp-general.cc
index 5f0cb041ffa..4f7c83fbd2c 100644
--- a/gcc/omp-general.cc
+++ b/gcc/omp-general.cc
@@ -1126,12 +1126,12 @@ const char *omp_tss_map[] =
  static const char *const kind_properties[] =
    { "host", "nohost", "cpu", "gpu", "fpga", "any", NULL };
  static const char *const vendor_properties[] =
-  { "amd", "arm", "bsc", "cray", "fujitsu", "gnu", "ibm", "intel",
+  { "amd", "arm", "bsc", "cray", "fujitsu", "gnu", "hpe", "ibm", "intel",
      "llvm", "nvidia", "pgi", "ti", "unknown", NULL };
  static const char *const extension_properties[] =
    { NULL };
  static const char *const atomic_default_mem_order_properties[] =
-  { "seq_cst", "relaxed", "acq_rel", NULL };
+  { "seq_cst", "relaxed", "acq_rel", "acquire", "release", NULL };

  struct omp_ts_info omp_ts_map[] =
    {
@@ -1551,6 +1551,12 @@ omp_context_selector_matches (tree ctx)
                else if (!strcmp (prop, "acq_rel")
                         && omo != OMP_MEMORY_ORDER_ACQ_REL)
                  return 0;
+               else if (!strcmp (prop, "acquire")
+                        && omo != OMP_MEMORY_ORDER_ACQUIRE)
+                 return 0;
+               else if (!strcmp (prop, "release")
+                        && omo != OMP_MEMORY_ORDER_RELEASE)
+                 return 0;
              }
            break;
          case OMP_TRAIT_DEVICE_ARCH:
diff --git a/gcc/testsuite/c-c++-common/gomp/declare-variant-2.c 
b/gcc/testsuite/c-c++-common/gomp/declare-variant-2.c
index 97285fa3b74..bc3f443379f 100644
--- a/gcc/testsuite/c-c++-common/gomp/declare-variant-2.c
+++ b/gcc/testsuite/c-c++-common/gomp/declare-variant-2.c
@@ -105,9 +105,9 @@ void f50 (void);                                                          /* { 
dg-error "expected '\\\}' before '\\(' token" "" {
  void f51 (void);                                                            /* { dg-error 
"expected '\\\}' before '\\(' token" "" { target c } .-1 } */
  #pragma omp declare variant (f1) match(implementation={atomic_default_mem_order})   /* 
{ dg-error "expected '\\(' before '\\\}' token" } */
  void f52 (void);
-#pragma omp declare variant (f1) 
match(implementation={atomic_default_mem_order(acquire)})   /* { dg-error "incorrect 
property 'acquire' of 'atomic_default_mem_order' selector" } */
+#pragma omp declare variant (f1) 
match(implementation={atomic_default_mem_order(acquire)})
  void f53 (void);
-#pragma omp declare variant (f1) 
match(implementation={atomic_default_mem_order(release)})   /* { dg-error "incorrect 
property 'release' of 'atomic_default_mem_order' selector" } */
+#pragma omp declare variant (f1) 
match(implementation={atomic_default_mem_order(release)})
  void f54 (void);
  #pragma omp declare variant (f1) 
match(implementation={atomic_default_mem_order(foobar)})   /* { dg-error "incorrect 
property 'foobar' of 'atomic_default_mem_order' selector" } */
  void f55 (void);
diff --git a/gcc/testsuite/gfortran.dg/gomp/declare-variant-2a.f90 
b/gcc/testsuite/gfortran.dg/gomp/declare-variant-2a.f90
index 56de1177789..edc9b27f884 100644
--- a/gcc/testsuite/gfortran.dg/gomp/declare-variant-2a.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/declare-variant-2a.f90
@@ -29,10 +29,10 @@ contains
      !$omp declare variant (f1) match(implementation={vendor("foobar")}) ! { dg-warning 
"unknown property '.foobar.' of 'vendor' selector" }
    end subroutine
    subroutine f53 ()
-    !$omp declare variant (f1) match(implementation={atomic_default_mem_order(acquire)}) 
 ! { dg-error "incorrect property 'acquire' of 'atomic_default_mem_order' 
selector" }
+    !$omp declare variant (f1) 
match(implementation={atomic_default_mem_order(acquire)})
    end subroutine
    subroutine f54 ()
-    !$omp declare variant (f1) match(implementation={atomic_default_mem_order(release)}) 
 ! { dg-error "incorrect property 'release' of 'atomic_default_mem_order' 
selector" }
+    !$omp declare variant (f1) 
match(implementation={atomic_default_mem_order(release)})
    end subroutine
    subroutine f55 ()
      !$omp declare variant (f1) match(implementation={atomic_default_mem_order(foobar)}) 
! { dg-error "incorrect property 'foobar' of 'atomic_default_mem_order' 
selector" }
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 
München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas 
Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht 
München, HRB 106955

Reply via email to