assert: Mark `__assert_fail` as `cold`
Noah Goldstein
goldstein.w.n@gmail.com
Fri Jul 26 08:41:00 GMT 2024
This helps compilers split the codegen for setting up the arguments
(`__expression`, `__filename`, etc...) from the potentially hot cold
where the `assert` is to a presumably cold region on the assertion
failure path.
---
assert/assert.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/assert/assert.h b/assert/assert.h
index 266a41df06..3261eb4202 100644
--- a/assert/assert.h
+++ b/assert/assert.h
@@ -71,13 +71,13 @@ extern void __assert_fail (const char *__assertion, const char *__file,
/* Likewise, but prints the error text for ERRNUM. */
extern void __assert_perror_fail (int __errnum, const char *__file,
unsigned int __line, const char *__function)
- __THROW __attribute__ ((__noreturn__));
+ __THROW __attribute__ ((__noreturn__)) __COLD;
/* The following is not at all used here but needed for standard
compliance. */
extern void __assert (const char *__assertion, const char *__file, int __line)
- __THROW __attribute__ ((__noreturn__));
+ __THROW __attribute__ ((__noreturn__)) __COLD;
__END_DECLS
--
2.34.1
More information about the Libc-alpha
mailing list