From bbd78df59b1811045187bfa05d852b566d9b6934 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Fri, 6 Jul 2018 17:06:04 -0700 Subject: [PATCH] add build macro NO_PREFETCH prevent usage of prefetch intrinsic commands which are not supported by c2rust (see https://github.com/immunant/c2rust/issues/13) --- lib/common/compiler.h | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/common/compiler.h b/lib/common/compiler.h index 366ed2b4..595bac20 100644 --- a/lib/common/compiler.h +++ b/lib/common/compiler.h @@ -88,15 +88,20 @@ #endif #endif -/* prefetch */ -#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_I86)) /* _mm_prefetch() is not defined outside of x86/x64 */ -# include /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */ -# define PREFETCH(ptr) _mm_prefetch((const char*)ptr, _MM_HINT_T0) -#elif defined(__GNUC__) && ( (__GNUC__ >= 4) || ( (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1) ) ) -# define PREFETCH(ptr) __builtin_prefetch(ptr, 0, 0) -#else +/* prefetch + * can be disabled, by declaring NO_PREFETCH macro */ +#if defined(NO_PREFETCH) # define PREFETCH(ptr) /* disabled */ -#endif +#else +# if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_I86)) /* _mm_prefetch() is not defined outside of x86/x64 */ +# include /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */ +# define PREFETCH(ptr) _mm_prefetch((const char*)ptr, _MM_HINT_T0) +# elif defined(__GNUC__) && ( (__GNUC__ >= 4) || ( (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1) ) ) +# define PREFETCH(ptr) __builtin_prefetch(ptr, 0, 0) +# else +# define PREFETCH(ptr) /* disabled */ +# endif +#endif /* NO_PREFETCH */ /* disable warnings */ #ifdef _MSC_VER /* Visual Studio */