I think it would be better to just use `__atomic_compare_exchange_n` all the time, just like corefx does. And add a comment that we are not using the standard `atomic_compare_exchange_strong` to workaround bugs in clang 5.0.