diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-06-21 08:59:44 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-06-21 08:59:44 +0000 |
commit | f1e89bc3407002bf7342326be7f9167d316fa624 (patch) | |
tree | ebc5ab1e7ec09fccc7c6daaf8dedaa20f4bf231a /libgomp | |
parent | 1fc5c8affbf852fa27e7781cb1e23b2892983d33 (diff) | |
download | gcc-f1e89bc3407002bf7342326be7f9167d316fa624.tar.gz |
* critical.c (GOMP_critical_name_start): Fix *pptr initialization
when gomp_mutex_t is larger than pointer and HAVE_SYNC_BUILTINS is
defined.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114843 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp')
-rw-r--r-- | libgomp/ChangeLog | 6 | ||||
-rw-r--r-- | libgomp/critical.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index dc86f86bdac..8cd5519f404 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,9 @@ +2006-06-21 Jakub Jelinek <jakub@redhat.com> + + * critical.c (GOMP_critical_name_start): Fix *pptr initialization + when gomp_mutex_t is larger than pointer and HAVE_SYNC_BUILTINS is + defined. + 2006-06-20 Jakub Jelinek <jakub@redhat.com> PR libgomp/26175 diff --git a/libgomp/critical.c b/libgomp/critical.c index 70159ec7a6e..90821634b5e 100644 --- a/libgomp/critical.c +++ b/libgomp/critical.c @@ -72,12 +72,14 @@ GOMP_critical_name_start (void **pptr) gomp_mutex_t *nlock = gomp_malloc (sizeof (gomp_mutex_t)); gomp_mutex_init (nlock); - plock = __sync_val_compare_and_swap (pptr, plock, nlock); - if (plock != nlock) + plock = __sync_val_compare_and_swap (pptr, NULL, nlock); + if (plock != NULL) { gomp_mutex_destroy (nlock); free (nlock); } + else + plock = nlock; #else gomp_mutex_lock (&create_lock_lock); plock = *pptr; |