diff options
author | Markus Wick <markus@selfnet.de> | 2021-04-02 08:43:26 +0200 |
---|---|---|
committer | Markus Wick <markus@selfnet.de> | 2021-04-04 21:19:33 +0200 |
commit | 9be819faaf8c1e6882c4ede339f4216d7ea72059 (patch) | |
tree | 1da2c1558e2e86d6defe4bf9b797f1171d847a7a /src/common/assert.h | |
parent | Merge pull request #6139 from Morph1984/cmake-fix-build (diff) | |
download | yuzu-9be819faaf8c1e6882c4ede339f4216d7ea72059.tar yuzu-9be819faaf8c1e6882c4ede339f4216d7ea72059.tar.gz yuzu-9be819faaf8c1e6882c4ede339f4216d7ea72059.tar.bz2 yuzu-9be819faaf8c1e6882c4ede339f4216d7ea72059.tar.lz yuzu-9be819faaf8c1e6882c4ede339f4216d7ea72059.tar.xz yuzu-9be819faaf8c1e6882c4ede339f4216d7ea72059.tar.zst yuzu-9be819faaf8c1e6882c4ede339f4216d7ea72059.zip |
Diffstat (limited to '')
-rw-r--r-- | src/common/assert.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/common/assert.h b/src/common/assert.h index 06d7b5612..b3ba35c0f 100644 --- a/src/common/assert.h +++ b/src/common/assert.h @@ -4,10 +4,13 @@ #pragma once -#include <cstdlib> -#include "common/common_funcs.h" #include "common/logging/log.h" +// Sometimes we want to try to continue even after hitting an assert. +// However touching this file yields a global recompilation as this header is included almost +// everywhere. So let's just move the handling of the failed assert to a single cpp file. +void assert_handle_failure(); + // For asserts we'd like to keep all the junk executed when an assert happens away from the // important code in the function. One way of doing this is to put all the relevant code inside a // lambda and force the compiler to not inline it. Unfortunately, MSVC seems to have no syntax to @@ -17,15 +20,14 @@ // enough for our purposes. template <typename Fn> #if defined(_MSC_VER) -[[msvc::noinline, noreturn]] +[[msvc::noinline]] #elif defined(__GNUC__) -[[gnu::cold, gnu::noinline, noreturn]] +[[gnu::cold, gnu::noinline]] #endif static void assert_noinline_call(const Fn& fn) { fn(); - Crash(); - exit(1); // Keeps GCC's mouth shut about this actually returning + assert_handle_failure(); } #define ASSERT(_a_) \ |