Despite having __GNUC__ set to 4, the standard library of the latest version of PCC doesn't have __sync_bool_compare_and_swap(). The simplest solution would be to explicitly exclude it:
#elif defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__PCC__)
// ^^^^^^^^^^^^^^^^^^^^
I have a feeling there are other compilers that define __GNUC__ that aren't fully compatible with it (e.g. Clang's function attributes differ). This may bite us later.
Despite having
__GNUC__set to 4, the standard library of the latest version of PCC doesn't have__sync_bool_compare_and_swap(). The simplest solution would be to explicitly exclude it:I have a feeling there are other compilers that define
__GNUC__that aren't fully compatible with it (e.g. Clang's function attributes differ). This may bite us later.