[gcc r10-9982] libstdc++: Simplify basic_string_view::ends_with [PR 101361]
Jonathan Wakely
redi@gcc.gnu.org
Wed Jul 14 16:04:59 GMT 2021
https://gcc.gnu.org/g:a8ae5dbc60eedade3514e51e3cb35fd28ec1d4c8
commit r10-9982-ga8ae5dbc60eedade3514e51e3cb35fd28ec1d4c8
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Tue Jul 13 12:21:27 2021 +0100
libstdc++: Simplify basic_string_view::ends_with [PR 101361]
The use of npos triggers a diagnostic as described in PR c++/101361.
This change replaces the use of npos with the exact length, which is
already known. We can further simplify it by inlining the effects of
compare and substr, avoiding the redundant range checks in the latter.
Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:
PR c++/101361
* include/std/string_view (ends_with): Use traits_type::compare
directly.
(cherry picked from commit 4d3eaeb4f505b0838c673ee28e7dba8687fc8272)
Diff:
---
libstdc++-v3/include/std/string_view | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/libstdc++-v3/include/std/string_view b/libstdc++-v3/include/std/string_view
index da23f9bc855..7e8ccbdd9e4 100644
--- a/libstdc++-v3/include/std/string_view
+++ b/libstdc++-v3/include/std/string_view
@@ -338,8 +338,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
constexpr bool
ends_with(basic_string_view __x) const noexcept
{
- return this->size() >= __x.size()
- && this->compare(this->size() - __x.size(), npos, __x) == 0;
+ const auto __len = this->size();
+ const auto __xlen = __x.size();
+ return __len >= __xlen
+ && traits_type::compare(end() - __xlen, __x.data(), __xlen) == 0;
}
constexpr bool
More information about the Libstdc++-cvs
mailing list