From e738b8cbe64b6dd3ed9f47b6d4cd7eb2c422b38d Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Tue, 30 Aug 2016 16:39:54 -0400 Subject: 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. --- src/exit/assert.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/exit/assert.c') diff --git a/src/exit/assert.c b/src/exit/assert.c index e87442a7..49b0dc3e 100644 --- a/src/exit/assert.c +++ b/src/exit/assert.c @@ -1,7 +1,7 @@ #include #include -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); fflush(NULL); -- cgit v1.2.1