utils: add BUG_ON()

Same as assert(), but is enabled in release build.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui 2024-02-18 18:27:51 +00:00
parent d1888b612c
commit a7d599e72d
No known key found for this signature in database
GPG Key ID: D3A4405BE6CC17F4
1 changed files with 11 additions and 0 deletions

View File

@ -44,6 +44,17 @@ safe_isnan(double a) {
assert(false); \
abort(); \
} while (0)
/// Abort the program is `expr` is true. This is similar to assert, but it is not disabled
/// in release builds.
#define BUG_ON(expr) \
do { \
bool __bug_on_tmp = (expr); \
assert(__bug_on_tmp && "original expr: " #expr); \
if (!__bug_on_tmp) { \
fprintf(stderr, "BUG_ON: check \"%s\" failed \n", #expr); \
abort(); \
} \
} while (0)
#define CHECK_EXPR(...) ((void)0)
/// Same as assert, but evaluates the expression even in release builds
#define CHECK(expr) \