[Mesa-dev] [PATCH] util: Implement assume() for clang.

Jordan Justen jordan.l.justen at intel.com
Fri Nov 21 15:47:19 PST 2014


On 2014-11-21 15:17:00, Matt Turner wrote:
> ---
>  src/util/macros.h | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/src/util/macros.h b/src/util/macros.h
> index da5daff..b67596d 100644
> --- a/src/util/macros.h
> +++ b/src/util/macros.h
> @@ -29,6 +29,10 @@
>  #  define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
>  #endif
>  
> +/* For compatibility with Clang's __has_builtin() */
> +#ifndef __has_builtin
> +#  define __has_builtin(x) 0
> +#endif
>  
>  /**
>   * __builtin_expect macros
> @@ -85,7 +89,13 @@ do {                        \
>   * Assume macro. Useful for expressing our assumptions to the compiler,
>   * typically for purposes of silencing warnings.
>   */
> -#ifdef HAVE___BUILTIN_UNREACHABLE
> +#if __has_builtin(__builtin_assume)
> +#define assume(expr)             \
> +do {                             \
> +   assert(!"assumption failed"); \

Did you mean to remove this assert?

With that removed
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

> +   __builtin_assume(expr);       \
> +} while (0)
> +#elif defined HAVE___BUILTIN_UNREACHABLE
>  #define assume(expr) ((expr) ? ((void) 0) \
>                               : (assert(!"assumption failed"), \
>                                  __builtin_unreachable()))
> -- 
> 2.0.4
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list