[Mesa-dev] [PATCH] util: Implement assume() for clang.
Jordan Justen
jordan.l.justen at intel.com
Fri Nov 21 16:23:41 PST 2014
On 2014-11-21 15:53:35, Matt Turner wrote:
> On Fri, Nov 21, 2014 at 3:47 PM, Jordan Justen
> <jordan.l.justen at intel.com> wrote:
> > 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>
>
> No. Clang's documentation says that if the expression you're assuming
> is false, behavior is undefined.
Worth noting in the commit message or a comment?
> The assertion is to help us catch
> cases where that happens.
So ... assert(expr) instead?
-Jordan
More information about the mesa-dev
mailing list