diff options
Diffstat (limited to 'common/atomic.h')
-rw-r--r-- | common/atomic.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/common/atomic.h b/common/atomic.h index 874d510d..2033476b 100644 --- a/common/atomic.h +++ b/common/atomic.h @@ -4,6 +4,19 @@ #include "static_assert.h" #include "bool.h" +#ifdef __GNUC__ +/* This helps cast away the const-ness of a pointer without accidentally + * changing the pointer type. This is necessary due to Clang's inability to use + * atomic_load on a const _Atomic variable. + */ +#define CONST_CAST(T, V) __extension__({ \ + const T _tmp = (V); \ + (T)_tmp; \ +}) +#else +#define CONST_CAST(T, V) ((T)(V)) +#endif + #ifdef __cplusplus extern "C" { #endif |