commit: f8a816cd27b2104c2a34a7572e343cdfd6e984ac Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Thu Apr 3 22:41:31 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Thu Apr 3 22:41:31 2025 +0000 URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=f8a816cd
12.4.0: drop 76_all_all_PR107087_12_Wstringop-overread-libstdc++-cow-empty.patch Equivalent patch is now upstream. Signed-off-by: Sam James <sam <AT> gentoo.org> ...12_Wstringop-overread-libstdc++-cow-empty.patch | 63 ---------------------- 12.4.0/gentoo/README.history | 4 ++ 2 files changed, 4 insertions(+), 63 deletions(-) diff --git a/12.4.0/gentoo/76_all_all_PR107087_12_Wstringop-overread-libstdc++-cow-empty.patch b/12.4.0/gentoo/76_all_all_PR107087_12_Wstringop-overread-libstdc++-cow-empty.patch deleted file mode 100644 index 15241fe..0000000 --- a/12.4.0/gentoo/76_all_all_PR107087_12_Wstringop-overread-libstdc++-cow-empty.patch +++ /dev/null @@ -1,63 +0,0 @@ -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107087 -https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=4969dcd2b7a94ce6c0d07225b21b5f3c040a4902 - -From 4969dcd2b7a94ce6c0d07225b21b5f3c040a4902 Mon Sep 17 00:00:00 2001 -From: Jonathan Wakely <[email protected]> -Date: Fri, 31 Mar 2023 13:44:04 +0100 -Subject: [PATCH] libstdc++: Teach optimizer that empty COW strings are empty - [PR107087] - -The compiler doesn't know about the invariant that the _S_empty_rep() -object is immutable and so _M_length and _M_refcount are always zero. -This means that we get warnings about writing possibly-non-zero length -strings into buffers that can't hold them. If we teach the compiler that -the empty rep is always zero length, it knows it can be copied into any -buffer. - -For Stage 1 we might want to also consider adding this to capacity(): - - if (_S_empty_rep()._M_capacity != 0) - __builtin_unreachable(); - -And this to _Rep::_M_is_leaked() and _Rep::_M_is_shared(): - - if (_S_empty_rep()._M_refcount != 0) - __builtin_unreachable(); - -libstdc++-v3/ChangeLog: - - PR tree-optimization/107087 - * include/bits/cow_string.h (basic_string::size()): Add - optimizer hint that _S_empty_rep()._M_length is always zero. - (basic_string::length()): Call size(). ---- a/libstdc++-v3/include/bits/cow_string.h -+++ b/libstdc++-v3/include/bits/cow_string.h -@@ -907,17 +907,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION - - public: - // Capacity: -+ - /// Returns the number of characters in the string, not including any - /// null-termination. - size_type - size() const _GLIBCXX_NOEXCEPT -- { return _M_rep()->_M_length; } -+ { -+#if _GLIBCXX_FULLY_DYNAMIC_STRING == 0 && __OPTIMIZE__ -+ if (_S_empty_rep()._M_length != 0) -+ __builtin_unreachable(); -+#endif -+ return _M_rep()->_M_length; -+ } - - /// Returns the number of characters in the string, not including any - /// null-termination. - size_type - length() const _GLIBCXX_NOEXCEPT -- { return _M_rep()->_M_length; } -+ { return size(); } - - /// Returns the size() of the largest possible %string. - size_type --- -2.31.1 diff --git a/12.4.0/gentoo/README.history b/12.4.0/gentoo/README.history index 52e5c88..d4f10c7 100644 --- a/12.4.0/gentoo/README.history +++ b/12.4.0/gentoo/README.history @@ -1,3 +1,7 @@ +3 3 April 2025 + + - 76_all_all_PR107087_12_Wstringop-overread-libstdc++-cow-empty.patch + 2 29 Nov 2024 - 78_all_PR115917-ada-lto.patch
