aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-11-27 11:52:40 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2024-11-27 21:36:14 +0000
commit17db5742a555d4f8fd5fa324adb6d1e5c55374be (patch)
tree6465237a7bf3d60282ab32029a7ce9904301e407
parent093584abb854559393e36cd4cdcf9dc4862dd046 (diff)
downloadgcc-17db5742a555d4f8fd5fa324adb6d1e5c55374be.zip
gcc-17db5742a555d4f8fd5fa324adb6d1e5c55374be.tar.gz
gcc-17db5742a555d4f8fd5fa324adb6d1e5c55374be.tar.bz2
libstdc++: Add cold attribute to assertion failure functions [PR117650]
This helps the compiler to split the cold path into a separate clone, so that the hot path is a smaller function that uses less icache, and the cold path is only fetched into the icache if actually executed. libstdc++-v3/ChangeLog: PR libstdc++/117650 * include/bits/c++config (__glibcxx_assert_fail): Add cold attribute. * include/debug/formatter.h (_Error_formatter::_M_error): Likewise.
-rw-r--r--libstdc++-v3/include/bits/c++config2
-rw-r--r--libstdc++-v3/include/debug/formatter.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index 236906d..c74b030 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -610,7 +610,7 @@ namespace std
{
#pragma GCC visibility push(default)
// Don't use <cassert> because this should be unaffected by NDEBUG.
- extern "C++" _GLIBCXX_NORETURN
+ extern "C++" _GLIBCXX_NORETURN __attribute__((__cold__))
void
__glibcxx_assert_fail /* Called when a precondition violation is detected. */
(const char* __file, int __line, const char* __function,
diff --git a/libstdc++-v3/include/debug/formatter.h b/libstdc++-v3/include/debug/formatter.h
index 4f5a453..df7f696 100644
--- a/libstdc++-v3/include/debug/formatter.h
+++ b/libstdc++-v3/include/debug/formatter.h
@@ -571,7 +571,7 @@ namespace __gnu_debug
_Error_formatter&
_M_message(_Debug_msg_id __id) const throw ();
- _GLIBCXX_NORETURN void
+ _GLIBCXX_NORETURN __attribute__((__cold__)) void
_M_error() const;
#if !_GLIBCXX_INLINE_VERSION