mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-01 17:24:38 +03:00
mark _mi_assert_fail as noreturn, cold and throw
This commit is contained in:
parent
31d1a38eab
commit
f8b10a67da
2 changed files with 28 additions and 1 deletions
|
@ -52,6 +52,32 @@ terms of the MIT license. A copy of the license can be found in the file
|
|||
#define mi_decl_hidden
|
||||
#endif
|
||||
|
||||
#if (MI_DEBUG)
|
||||
#if defined(_MSC_VER)
|
||||
#define mi_decl_noreturn __declspec(noreturn)
|
||||
#elif (defined(__GNUC__) && (__GNUC__ >= 3)) || defined(__clang__)
|
||||
#define mi_decl_noreturn __attribute__((__noreturn__))
|
||||
#else
|
||||
#define mi_decl_noreturn
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 'cold' attribute seems to have been fully supported since GCC 4.x.
|
||||
* See https://github.com/gcc-mirror/gcc/commit/52bf96d2f299e9e6.
|
||||
*/
|
||||
#if (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__)
|
||||
#define mi_decl_cold __attribute__((cold))
|
||||
#else
|
||||
#define mi_decl_cold
|
||||
#endif
|
||||
|
||||
#if (defined(__GNUC__) && defined(__THROW))
|
||||
#define mi_decl_throw __THROW
|
||||
#else
|
||||
#define mi_decl_throw
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__EMSCRIPTEN__) && !defined(__wasi__)
|
||||
#define __wasi__
|
||||
#endif
|
||||
|
|
|
@ -650,6 +650,7 @@ struct mi_tld_s {
|
|||
|
||||
#if (MI_DEBUG)
|
||||
// use our own assertion to print without memory allocation
|
||||
mi_decl_noreturn mi_decl_cold mi_decl_throw
|
||||
void _mi_assert_fail(const char* assertion, const char* fname, unsigned int line, const char* func);
|
||||
#define mi_assert(expr) ((expr) ? (void)0 : _mi_assert_fail(#expr,__FILE__,__LINE__,__func__))
|
||||
#else
|
||||
|
|
Loading…
Add table
Reference in a new issue