• Tom Lane's avatar
    Use more of gcc's __sync_fetch_and_xxx builtin functions for atomic ops. · e09db94c
    Tom Lane authored
    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
    e09db94c
generic-gcc.h 8.63 KB