pgsql: Use more of gcc's __sync_fetch_and_xxx builtin functions for ato

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Use more of gcc's __sync_fetch_and_xxx builtin functions for ato
Date: 2017-09-06 18:21:53
Message-ID: E1dpexV-0002qO-I3@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Use more of gcc's __sync_fetch_and_xxx builtin functions for atomic ops.

In addition to __sync_fetch_and_add, gcc offers __sync_fetch_and_sub,
__sync_fetch_and_and, and __sync_fetch_and_or, which correspond directly
to primitive atomic ops that we want. Testing shows that in some cases
they generate better code than our generic implementations, so use them.

We've assumed that configure's test for __sync_val_compare_and_swap is
sufficient to allow assuming that __sync_fetch_and_add is available, so
make the same assumption for these functions. Should that prove to be
wrong, we can add more configure tests.

Yura Sokolov, reviewed by Jesper Pedersen and myself

Discussion: https://postgr.es/m/7f65886daca545067f82bf2b463b218d@postgrespro.ru

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/e09db94c0a5f3b440d96c5c9e8e6c1638d1ec39f

Modified Files
--------------
src/include/port/atomics/generic-gcc.h | 58 ++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2017-09-06 18:37:30 Re: [COMMITTERS] pgsql: Add psql variables showing server version and psql version.
Previous Message Fabien COELHO 2017-09-06 17:53:40 Re: [COMMITTERS] pgsql: Add psql variables showing server version and psql version.