diff --git a/src/lib/eina/eina_types.h b/src/lib/eina/eina_types.h index 139dafaf54..fc01c69de8 100644 --- a/src/lib/eina/eina_types.h +++ b/src/lib/eina/eina_types.h @@ -193,10 +193,18 @@ # define EINA_UNLIKELY(exp) __builtin_expect((exp), 0) # define EINA_LIKELY(exp) __builtin_expect((exp), 1) # define EINA_SENTINEL __attribute__((__sentinel__)) -# define EINA_PREFETCH(arg) __builtin_prefetch(arg) -# define EINA_PREFETCH_WRITE(arg) __builtin_prefetch(arg, 1) -# define EINA_PREFETCH_NOCACHE(arg) __builtin_prefetch(arg, 0, 0) -# define EINA_PREFETCH_NOCACHE_WRITE(arg) __builtin_prefetch(arg, 1, 0) +# ifndef __clang__ +# define EINA_PREFETCH(arg) __builtin_prefetch(arg) +# define EINA_PREFETCH_WRITE(arg) __builtin_prefetch(arg, 1) +# define EINA_PREFETCH_NOCACHE(arg) __builtin_prefetch(arg, 0, 0) +# define EINA_PREFETCH_NOCACHE_WRITE(arg) __builtin_prefetch(arg, 1, 0) +# else +/* LLVM Clang workaround (crash on compilation) */ +# define EINA_PREFETCH(arg) ((void) (arg)) +# define EINA_PREFETCH_WRITE(arg) ((void) (arg)) +# define EINA_PREFETCH_NOCACHE(arg) ((void) (arg)) +# define EINA_PREFETCH_NOCACHE_WRITE(arg) ((void) (arg)) +# endif # else # define EINA_PRINTF(fmt, arg) # define EINA_SCANF(fmt, arg) @@ -206,10 +214,10 @@ # define EINA_UNLIKELY(exp) exp # define EINA_LIKELY(exp) exp # define EINA_SENTINEL -# define EINA_PREFETCH(arg) -# define EINA_PREFETCH_WRITE(arg) -# define EINA_PREFETCH_NOCACHE(arg) -# define EINA_PREFETCH_NOCACHE_WRITE(arg) +# define EINA_PREFETCH(arg) ((void) (arg)) +# define EINA_PREFETCH_WRITE(arg) ((void) (arg)) +# define EINA_PREFETCH_NOCACHE(arg) ((void) (arg)) +# define EINA_PREFETCH_NOCACHE_WRITE(arg) ((void) (arg)) # endif #elif defined(_MSC_VER) @@ -231,10 +239,10 @@ # define EINA_UNLIKELY(exp) exp # define EINA_LIKELY(exp) exp # define EINA_SENTINEL -# define EINA_PREFETCH(arg) -# define EINA_PREFETCH_WRITE(arg) -# define EINA_PREFETCH_NOCACHE(arg) -# define EINA_PREFETCH_NOCACHE_WRITE(arg) +# define EINA_PREFETCH(arg) ((void) (arg)) +# define EINA_PREFETCH_WRITE(arg) ((void) (arg)) +# define EINA_PREFETCH_NOCACHE(arg) ((void) (arg)) +# define EINA_PREFETCH_NOCACHE_WRITE(arg) ((void) (arg)) #elif defined(__SUNPRO_C) # define EINA_UNUSED @@ -260,10 +268,10 @@ # define EINA_UNLIKELY(exp) exp # define EINA_LIKELY(exp) exp # define EINA_SENTINEL -# define EINA_PREFETCH(arg) -# define EINA_PREFETCH_WRITE(arg) -# define EINA_PREFETCH_NOCACHE(arg) -# define EINA_PREFETCH_NOCACHE_WRITE(arg) +# define EINA_PREFETCH(arg) ((void) (arg)) +# define EINA_PREFETCH_WRITE(arg) ((void) (arg)) +# define EINA_PREFETCH_NOCACHE(arg) ((void) (arg)) +# define EINA_PREFETCH_NOCACHE_WRITE(arg) ((void) (arg)) #else /* ! __GNUC__ && ! _MSC_VER && ! __SUNPRO_C */