libgfortran: Bugfix if not define HAVE_ATOMIC_FETCH_ADD

This patch try to fix the bug when HAVE_ATOMIC_FETCH_ADD is
not defined in dec_waiting_unlocked function. As io.h does
not include async.h, the WRLOCK and RWUNLOCK macros are
undefined.

libgfortran/ChangeLog:

	* io/io.h (dec_waiting_unlocked): Use
	__gthread_rwlock_wrlock/__gthread_rwlock_unlock or
	__gthread_mutex_lock/__gthread_mutex_unlock functions
	to replace WRLOCK and RWUNLOCK macros.

Signed-off-by: Lipeng Zhu <lipeng.zhu@intel.com>
This commit is contained in:
Lipeng Zhu 2024-01-04 20:43:26 -05:00 committed by H.J. Lu
parent 7be87b7d2e
commit 8414f10ad5

View file

@ -1020,9 +1020,15 @@ dec_waiting_unlocked (gfc_unit *u)
#ifdef HAVE_ATOMIC_FETCH_ADD
(void) __atomic_fetch_add (&u->waiting, -1, __ATOMIC_RELAXED);
#else
WRLOCK (&unit_rwlock);
#ifdef __GTHREAD_RWLOCK_INIT
__gthread_rwlock_wrlock (&unit_rwlock);
u->waiting--;
RWUNLOCK (&unit_rwlock);
__gthread_rwlock_unlock (&unit_rwlock);
#else
__gthread_mutex_lock (&unit_rwlock);
u->waiting--;
__gthread_mutex_unlock (&unit_rwlock);
#endif
#endif
}