OSDN Git Service

* gcc.dg/vect/vect-116.c: Add vect_int target requirement.
[pf3gnuchains/gcc-fork.git] / libgomp / critical.c
index 70159ec..9082163 100644 (file)
@@ -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;