We shouldn't care about optimizing performance under obsolete versions of clang as long as we don't get compile/test failures under those old versions. So this check looks reasonable.
On Thu, May 19, 2016 at 2:20 AM, Maxim Uvarov <[email protected]> wrote: > Fix compilation error for clang: > In function `_odp_atomic_u128_xchg_mm': > undefined reference to `__atomic_exchange' > Clang less than 3.6 has issue with defined _SIZEOF_INT128_ and > __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 but not supported > __atomic_exchange(). This patch adds additional check for clang > version. > > Signed-off-by: Maxim Uvarov <[email protected]> > Reviewed-by: Bill Fischofer <[email protected]> > --- > v2: add check for clang version > > platform/linux-generic/include/odp_atomic_internal.h | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/platform/linux-generic/include/odp_atomic_internal.h > b/platform/linux-generic/include/odp_atomic_internal.h > index 3c5606c..67e8f82 100644 > --- a/platform/linux-generic/include/odp_atomic_internal.h > +++ b/platform/linux-generic/include/odp_atomic_internal.h > @@ -589,12 +589,21 @@ static inline void > _odp_atomic_flag_clear(_odp_atomic_flag_t *flag) > > /* Check if target and compiler supports 128-bit scalars and corresponding > * exchange and CAS operations */ > -/* GCC on x86-64 needs -mcx16 compiler option */ > +/* GCC/clang on x86-64 needs -mcx16 compiler option */ > #if defined __SIZEOF_INT128__ && defined > __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 > > -/** Preprocessor symbol that indicates support for 128-bit atomics */ > +#if defined(__clang__) > + > +#if ((__clang_major__ * 100 + __clang_minor__) >= 306) > +#define ODP_ATOMIC_U128 > +#endif > + > +#else /* gcc */ > #define ODP_ATOMIC_U128 > +#endif > +#endif > > +#ifdef ODP_ATOMIC_U128 > /** An unsigned 128-bit (16-byte) scalar type */ > typedef __int128 _uint128_t; > > -- > 2.7.1.250.gff4ea60 > > _______________________________________________ > lng-odp mailing list > [email protected] > https://lists.linaro.org/mailman/listinfo/lng-odp > _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
