diff options
author | Janne Blomqvist <jb@gcc.gnu.org> | 2018-11-22 09:58:29 +0200 |
---|---|---|
committer | Janne Blomqvist <jb@gcc.gnu.org> | 2018-11-22 09:58:29 +0200 |
commit | 0536d5b37dd18b0eb9221ec9f55ca29585b43759 (patch) | |
tree | 1c47a0906545646e489776bb7192e076e86825f8 /libgo | |
parent | d8bcb00f21f21da751204a6d96ef70cb6b037b97 (diff) | |
download | gcc-0536d5b37dd18b0eb9221ec9f55ca29585b43759.zip gcc-0536d5b37dd18b0eb9221ec9f55ca29585b43759.tar.gz gcc-0536d5b37dd18b0eb9221ec9f55ca29585b43759.tar.bz2 |
Replace sync builtins with atomic builtins
The old __sync builtins have been deprecated for a long time now in
favor of the __atomic builtins following the C++11/C11 memory model.
This patch converts libgfortran to use the modern __atomic builtins.
At the same time I weakened the consistency to relaxed for
incrementing and decrementing the counter, and acquire-release when
decrementing to check whether the counter is 0 and the unit can be
freed. This is similar to e.g. std::shared_ptr in C++.
Regtested on x86_64-pc-linux-gnu.
libgfortran/ChangeLog:
2018-11-22 Janne Blomqvist <jb@gcc.gnu.org>
* acinclude.m4 (LIBGFOR_CHECK_ATOMIC_FETCH_ADD): Rename and test
presence of atomic builtins instead of sync builtins.
* configure.ac (LIBGFOR_CHECK_ATOMIC_FETCH_ADD): Call new test.
* io/io.h (inc_waiting_locked): Use __atomic_fetch_add.
(predec_waiting_locked): Use __atomic_add_fetch.
(dec_waiting_unlocked): Use __atomic_fetch_add.
* config.h.in: Regenerated.
* configure: Regenerated.
* Makefile.in: Regenerated.
From-SVN: r266367
Diffstat (limited to 'libgo')
0 files changed, 0 insertions, 0 deletions