From 34a2ccd3a4d63f7e100e8dafc27243bd8d970e77 Mon Sep 17 00:00:00 2001 From: riastradh Date: Sun, 19 Dec 2021 11:10:48 +0000 Subject: linux: Simplify build_bug.h and add static_assert. --- sys/external/bsd/common/include/linux/build_bug.h | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'sys/external/bsd/common/include/linux') diff --git a/sys/external/bsd/common/include/linux/build_bug.h b/sys/external/bsd/common/include/linux/build_bug.h index cf6df82c376..9149582caf6 100644 --- a/sys/external/bsd/common/include/linux/build_bug.h +++ b/sys/external/bsd/common/include/linux/build_bug.h @@ -1,4 +1,4 @@ -/* $NetBSD: build_bug.h,v 1.1 2021/12/19 11:10:41 riastradh Exp $ */ +/* $NetBSD: build_bug.h,v 1.2 2021/12/19 11:10:48 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -31,17 +31,15 @@ #include -/* - * static_assert is violated with runtime-only compiler semantics in a few - * places. Instead of breaking the build, stop asserting these corner cases. - */ +/* Required to be false _or_ nonconstant. */ +#define BUILD_BUG_ON(EXPR) \ + CTASSERT(__builtin_choose_expr(__builtin_constant_p(EXPR), !(EXPR), 1)) -#define DRMCTASSERT(x) CTASSERT((__builtin_choose_expr( \ - __builtin_constant_p(x), (x), 1))) +/* Required to be constant _and_ true. XXX Should take optional message. */ +#define static_assert(EXPR) CTASSERT(EXPR) -#define BUILD_BUG() do {} while (0) -#define BUILD_BUG_ON(CONDITION) DRMCTASSERT(!(CONDITION)) -#define BUILD_BUG_ON_MSG(CONDITION,MSG) DRMCTASSERT(!(CONDITION)) +#define BUILD_BUG() do {} while (0) +#define BUILD_BUG_ON_MSG(EXPR,MSG) BUILD_BUG_ON(EXPR) #define BUILD_BUG_ON_INVALID(EXPR) ((void)sizeof((long)(EXPR))) #endif /* _LINUX_BUILD_BUG_H_ */ -- cgit