On Wed, Mar 08, 2023 at 02:31:38PM +0800, Hongyu Wang wrote: > Hi, > > When OMP_WAIT_POLICY is not specified, current implementation will cause > icv flag GOMP_ICV_WAIT_POLICY unset, so global variable wait_policy > will remain its uninitialized value. Set it to -1 when the flag is not > specified to keep GOMP_SPINCOUNT behavior consistent with its description. > > Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk? > > libgomp/ChangeLog: > > PR libgomp/109062 > * env.c (initialize_env): Set wait_policy to -1 if > OMP_WAIT_POLICY is not specified. > * testsuite/libgomp.c-c++-common/pr109062.c: New test.
I think the right spot to fix this would be instead in initialize_icvs, change the icvs->wait_policy = 0; in there to icvs->wait_policy = -1; That way it will be the default for all the devices, not just the initial one. Ok for trunk with that change if it works. > diff --git a/libgomp/env.c b/libgomp/env.c > index c41c1f852cc..fa36a8697d6 100644 > --- a/libgomp/env.c > +++ b/libgomp/env.c > @@ -2249,6 +2249,8 @@ initialize_env (void) > wait_policy = none->icvs.wait_policy; > else if (all != NULL && gomp_get_icv_flag (all->flags, > GOMP_ICV_WAIT_POLICY)) > wait_policy = all->icvs.wait_policy; > + else > + wait_policy = -1; > > if (!parse_spincount ("GOMP_SPINCOUNT", &gomp_spin_count_var)) > { > diff --git a/libgomp/testsuite/libgomp.c-c++-common/pr109062.c > b/libgomp/testsuite/libgomp.c-c++-common/pr109062.c > new file mode 100644 > index 00000000000..5c7c287dafd > --- /dev/null > +++ b/libgomp/testsuite/libgomp.c-c++-common/pr109062.c > @@ -0,0 +1,14 @@ > +/* { dg-do run } */ > + > +#include <omp.h> > +#include <stdlib.h> > + > +int > +main () > +{ > + omp_display_env (1); > + > + return 0; > +} > + > +/* { dg-output ".*\\\[host] GOMP_SPINCOUNT = '300000'.*" { target native } } > */ > -- > 2.31.1 Jakub