Update M_ASSERT to separate requirement for predicate
This commit is contained in:
1 parent
c8354aa6ed
commit
d1094999f5
1 file changed
+4
-2
@@ -80,9 +80,11 @@
|
|||||||
# define M_ASSUME(x) M_ASSERT(x)
|
# define M_ASSUME(x) M_ASSERT(x)
|
||||||
#elif defined(__GNUC__) \
|
#elif defined(__GNUC__) \
|
||||||
&& (__GNUC__ * 100 + __GNUC_MINOR__) >= 408
|
&& (__GNUC__ * 100 + __GNUC_MINOR__) >= 408
|
||||||
|
/* We test that the argument can properly be converted into a constant expression */
|
||||||
# define M_ASSUME(x) \
|
# define M_ASSUME(x) \
|
||||||
(! __builtin_constant_p (!!(x) || !(x)) || (x) ? \
|
(M_STATIC_ASSERT( __builtin_constant_p (!!(x) || !(x)), \
|
||||||
(void) 0 : __builtin_unreachable())
|
M_LIB_NOT_A_CONSTANT, "Argument doesn't evaluate to a constant: " M_ASTR(x) ), \
|
||||||
|
(x) ? (void) 0 : __builtin_unreachable())
|
||||||
#elif defined(_MSC_VER)
|
#elif defined(_MSC_VER)
|
||||||
# define M_ASSUME(x) __assume(x)
|
# define M_ASSUME(x) __assume(x)
|
||||||
#else
|
#else
|
||||||
|
|||||||
Reference in new issue
Block a user