mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-02 01:34: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
|
#define mi_decl_hidden
|
||||||
#endif
|
#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__)
|
#if defined(__EMSCRIPTEN__) && !defined(__wasi__)
|
||||||
#define __wasi__
|
#define __wasi__
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -650,6 +650,7 @@ struct mi_tld_s {
|
||||||
|
|
||||||
#if (MI_DEBUG)
|
#if (MI_DEBUG)
|
||||||
// use our own assertion to print without memory allocation
|
// 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);
|
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__))
|
#define mi_assert(expr) ((expr) ? (void)0 : _mi_assert_fail(#expr,__FILE__,__LINE__,__func__))
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Add table
Reference in a new issue