diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2024-11-27 11:52:40 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2024-11-27 21:36:14 +0000 |
commit | 17db5742a555d4f8fd5fa324adb6d1e5c55374be (patch) | |
tree | 6465237a7bf3d60282ab32029a7ce9904301e407 | |
parent | 093584abb854559393e36cd4cdcf9dc4862dd046 (diff) | |
download | gcc-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++config | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/formatter.h | 2 |
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 |