mirror of
https://github.com/fluencelabs/musl
synced 2025-04-24 23:02:14 +00:00
restore _Noreturn to __assert_fail
this reverts commit 2c1f8fd5da3306fd7c8a2267467e44eb61f12dd4. without the _Noreturn attribute, the compiler cannot use asserts to perform reachability/range analysis. this leads to missed optimizations and spurious warnings. the original backtrace problem that prompted the removal of _Noreturn was not clearly documented at the time, but it seems to happen only when libc was built without -g, which also breaks many other backtracing cases.
This commit is contained in:
parent
397586625e
commit
e738b8cbe6
@ -16,7 +16,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void __assert_fail (const char *, const char *, int, const char *);
|
_Noreturn void __assert_fail (const char *, const char *, int, const char *);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
void __assert_fail(const char *expr, const char *file, int line, const char *func)
|
_Noreturn void __assert_fail(const char *expr, const char *file, int line, const char *func)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Assertion failed: %s (%s: %s: %d)\n", expr, file, func, line);
|
fprintf(stderr, "Assertion failed: %s (%s: %s: %d)\n", expr, file, func, line);
|
||||||
fflush(NULL);
|
fflush(NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user