From 9de58f28757bbbb2266e7aff8b85018fb1d63fc9 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sun, 16 May 2021 21:46:30 +0100 Subject: [PATCH] assert: Check for unreachable code if DYNARMIC_IGNORE_ASSERTS isn't enabled --- src/common/assert.h | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/common/assert.h b/src/common/assert.h index 2181ec00..f78e5a29 100644 --- a/src/common/assert.h +++ b/src/common/assert.h @@ -24,27 +24,29 @@ template } // namespace Dynarmic::Common -#if defined(NDEBUG) - #if defined(__clang) || defined(__GNUC__) - #define UNREACHABLE() __builtin_unreachable() - #define ASSUME(expr) [&]{ if (!(expr)) __builtin_unreachable(); }() - #elif defined(_MSC_VER) - #define UNREACHABLE() __assume(0) - #define ASSUME(expr) __assume(expr) - #else - #define UNREACHABLE() ASSERT_FALSE("Unreachable code!") - #define ASSUME(expr) - #endif +#if defined(__clang) || defined(__GNUC__) + #define ASSUME(expr) [&]{ if (!(expr)) __builtin_unreachable(); }() +#elif defined(_MSC_VER) + #define ASSUME(expr) __assume(expr) #else - #define UNREACHABLE() ASSERT_FALSE("Unreachable code!") #define ASSUME(expr) #endif #ifdef DYNARMIC_IGNORE_ASSERTS + #if defined(__clang) || defined(__GNUC__) + #define UNREACHABLE() __builtin_unreachable() + #elif defined(_MSC_VER) + #define UNREACHABLE() __assume(0) + #else + #define UNREACHABLE() + #endif + #define ASSERT(expr) ASSUME(expr) #define ASSERT_MSG(expr, ...) ASSUME(expr) #define ASSERT_FALSE(...) UNREACHABLE() #else + #define UNREACHABLE() ASSERT_FALSE("Unreachable code!") + #define ASSERT(expr) \ [&]{ \ if (UNLIKELY(!(expr))) { \