diff options
| author | Weiyi Wang <wwylele@gmail.com> | 2019-10-05 10:45:01 -0400 |
|---|---|---|
| committer | FearlessTobi <thm.frey@gmail.com> | 2019-11-23 01:30:06 +0100 |
| commit | e20e161c5c1dda3a04276d66d5a5e31121fa9e9f (patch) | |
| tree | c7f1a09cea335f5032533553aadc3508a08270a6 /src/common/assert.h | |
| parent | ccd42d0c09406ade9a30f263f2facafd2b3b9a31 (diff) | |
unfold UNREACHABLE implementation for dumb compilers
We relies on UNREACHABLE's noreturn attribute to eliminate parent's "no return value" warning. However, this was wrapped in a `if(!false)` block, which compilers may not unfold to recognize the noreturn nature.
Diffstat (limited to 'src/common/assert.h')
| -rw-r--r-- | src/common/assert.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/common/assert.h b/src/common/assert.h index 4b0e3f64ee..3b4d92b30d 100644 --- a/src/common/assert.h +++ b/src/common/assert.h @@ -41,8 +41,8 @@ __declspec(noinline, noreturn) } \ while (0) -#define UNREACHABLE() ASSERT_MSG(false, "Unreachable code!") -#define UNREACHABLE_MSG(...) ASSERT_MSG(false, __VA_ARGS__) +#define UNREACHABLE() assert_noinline_call([] { LOG_CRITICAL(Debug, "Unreachable code!"); }) +#define UNREACHABLE_MSG(...) assert_noinline_call([] { LOG_CRITICAL(Debug, "Unreachable code!\n" __VA_ARGS__); }) #ifdef _DEBUG #define DEBUG_ASSERT(_a_) ASSERT(_a_) |
