[V3,4/4] OpenMP: Permit additional selector properties
Checks
Commit Message
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(-)
Comments
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
@@ -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:
@@ -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);
@@ -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" }