Message ID | 20231207155247.372718-5-sandra@codesourcery.com |
---|---|
State | New |
Headers | show |
Series | OpenMP: Improve data abstractions for context selectors | expand |
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
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" }