aboutsummaryrefslogtreecommitdiff
path: root/libgomp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-06-21 08:59:44 +0000
committerJakub Jelinek <jakub@redhat.com>2006-06-21 08:59:44 +0000
commitb0c19bd7f747e75226d1a9d595ec526af0fef3cc (patch)
treeebc5ab1e7ec09fccc7c6daaf8dedaa20f4bf231a /libgomp
parent1a6130ff749f065a0a2ba2d836d6a103ccb69a16 (diff)
* 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: https://gcc.gnu.org/svn/gcc/trunk@114843 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp')
-rw-r--r--libgomp/ChangeLog6
-rw-r--r--libgomp/critical.c6
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;