On Tuesday, September 30, 2014 04:24:39 PM Matt Turner wrote: > --- > src/util/macros.h | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/src/util/macros.h b/src/util/macros.h > index 40ebf02..77055e8 100644 > --- a/src/util/macros.h > +++ b/src/util/macros.h > @@ -75,6 +75,19 @@ do { \ > #define unreachable(str) > #endif > > +/** > + * Assume macro. Useful for expressing our assumptions to the compiler, > + * typically for purposes of silencing warnings. > + */ > +#ifdef HAVE___BUILTIN_UNREACHABLE > +#define assume(expr) ((expr) ? (void)0 : assert(!"assumption failed"), \ > + __builtin_unreachable()) > +#elif _MSC_VER >= 1200 > +#define assume(expr) __assume(expr) > +#else > +#define assume(expr) assert(expr) > +#endif > + > #ifdef HAVE_FUNC_ATTRIBUTE_FLATTEN > #define FLATTEN __attribute__((__flatten__)) > #else >
This doesn't work. I think the precedence rules are biting you here. +#define assume(expr) ((expr) ? ((void) 0) \ + : (assert(!"assumption failed"), \ + __builtin_unreachable())) fixes your second patch.
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev