libgomp: Fix default value of GOMP_SPINCOUNT [PR 109062]

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. Initialize it to -1 to make
GOMP_SPINCOUNT behavior consistent with its description.

libgomp/ChangeLog:

	PR libgomp/109062
	* env.c (wait_policy): Initialize to -1.
	(initialize_icvs): Initialize icvs->wait_policy to -1.
	* testsuite/libgomp.c-c++-common/pr109062.c: New test.
This commit is contained in:
Hongyu Wang 2023-03-08 11:29:46 +08:00
parent 6a87fdd3ed
commit 288bc7b5d1
2 changed files with 16 additions and 2 deletions

View File

@ -124,7 +124,7 @@ int goacc_default_dims[GOMP_DIM_MAX];
#ifndef LIBGOMP_OFFLOADED_ONLY
static int wait_policy;
static int wait_policy = -1;
static unsigned long stacksize = GOMP_DEFAULT_STACKSIZE;
static void
@ -1981,7 +1981,7 @@ initialize_icvs (struct gomp_initial_icvs *icvs)
icvs->bind_var = gomp_default_icv_values.bind_var;
icvs->nteams_var = gomp_default_icv_values.nteams_var;
icvs->teams_thread_limit_var = gomp_default_icv_values.teams_thread_limit_var;
icvs->wait_policy = 0;
icvs->wait_policy = -1;
}
/* Helper function for initialize_env to add a device specific ICV value

View File

@ -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 } } */