I noticed that the fallback pg_atomic_test_set_flag_impl() implementation
that uses atomic-exchange is giving pg_atomic_exchange_u32_impl() an extra
argument. This appears to be copy/pasted from the atomic-compare-exchange
version a few lines down. It looks like it's been this way since this code
was introduced in commit b64d92f (2014). Patch attached.
I'd ordinarily suggest removing this section of code since it doesn't seem
to have gotten much coverage, but I'm actually looking into adding some
faster atomic-exchange implementations that may activate this code for
certain compiler/architecture combinations.
--
Nathan Bossart
Amazon Web Services: https://aws.amazon.com