diff options
author | Lipeng Zhu <lipeng.zhu@intel.com> | 2024-01-04 20:43:26 -0500 |
---|---|---|
committer | H.J. Lu <(no_default)> | 2024-01-15 05:22:07 -0800 |
commit | 8414f10ad5bad6d522b72f9ae35e0bb86bb290ea (patch) | |
tree | 4ccfba1af17ab7bd5673d8a963b65bcfafa14677 /libgfortran/io/io.h | |
parent | 7be87b7d2e330afd14a7cc028f64d88f80e12f40 (diff) | |
download | gcc-8414f10ad5bad6d522b72f9ae35e0bb86bb290ea.zip gcc-8414f10ad5bad6d522b72f9ae35e0bb86bb290ea.tar.gz gcc-8414f10ad5bad6d522b72f9ae35e0bb86bb290ea.tar.bz2 |
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>
Diffstat (limited to 'libgfortran/io/io.h')
-rw-r--r-- | libgfortran/io/io.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h index 862daca..59bc19e 100644 --- a/libgfortran/io/io.h +++ b/libgfortran/io/io.h @@ -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--; + __gthread_rwlock_unlock (&unit_rwlock); +#else + __gthread_mutex_lock (&unit_rwlock); u->waiting--; - RWUNLOCK (&unit_rwlock); + __gthread_mutex_unlock (&unit_rwlock); +#endif #endif } |