X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=include%2Furcu%2Fcompiler.h;h=157346763078a3ec1d73b7c65618ed1bd98b325f;hb=0cdbb569aa571e738df8f4280e47ab0aadad576a;hp=4806ee338a99706ae5bb9eedb503fdc54e00c661;hpb=3f0dd283a89ab114ffbf5c3dd46463217c6bb2ff;p=urcu.git diff --git a/include/urcu/compiler.h b/include/urcu/compiler.h index 4806ee3..1573467 100644 --- a/include/urcu/compiler.h +++ b/include/urcu/compiler.h @@ -108,10 +108,21 @@ #define CAA_ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -#ifdef __GNUC__ +/* + * URCU_GCC_VERSION is used to blacklist specific GCC versions with known + * bugs, clang also defines these macros to an equivalent GCC version it + * claims to support, so exclude it. + */ +#if defined(__GNUC__) && !defined(__clang__) # define URCU_GCC_VERSION (__GNUC__ * 10000 \ + __GNUC_MINOR__ * 100 \ + __GNUC_PATCHLEVEL__) #endif +#ifndef __cplusplus +#define caa_c_transparent_union __attribute__((__transparent_union__)) +#else +#define caa_c_transparent_union +#endif + #endif /* _URCU_COMPILER_H */