https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93599

--- Comment #14 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-9 branch has been updated by Thomas Kथघnig
<tkoe...@gcc.gnu.org>:

https://gcc.gnu.org/g:c080a6fb6f0cf402affc287fc600c189980cfb2d

commit r9-8264-gc080a6fb6f0cf402affc287fc600c189980cfb2d
Author: Thomas König <tkoe...@gcc.gnu.org>
Date:   Thu Feb 13 22:22:04 2020 +0100

    Use au->lock exclusively for locking in async I/O.

    2020-02-18  Thomas Koenig  <tkoe...@gcc.gnu.org>

        Backport from trunk
        PR fortran/93599
        * io/async.c (destroy_adv_cond): Do not destroy lock.
        (async_io): Make sure au->lock is locked for finishing of thread.
        Do not lock/unlock around signalling emptysignal. Unlock au->lock
        before return.
        (init_adv_cond): Do not initialize lock.
        (enqueue_transfer): Unlock after signal.
        (enqueue_done_id): Likewise.
        (enqueue_done): Likewise.
        (enqueue_close): Likewise.
        (enqueue_data_transfer): Likewise.
        (async_wait_id): Do not lock/unlock around signalling au->work.
        (async_wait): Unlock after signal.
        * io/async.h (SIGNAL): Add comment about needed au->lock.
        Remove locking/unlocking of advcond->lock.
        (WAIT_SIGNAL_MUTEX): Add comment. Remove locking/unlocking of
        advcond->lock.  Unlock mutex only at the end.  Loop on
        __ghread_cond_wait returning zero.
        (REVOKE_SIGNAL): Add comment. Remove locking/unlocking of
        advcond->lock.
        (struct adv_cond): Remove mutex from struct.

Reply via email to