public inbox for libstdc++-cvs@sourceware.org
help / color / mirror / Atom feed
From: Tamar Christina <tnfchris@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org
Subject: [gcc(refs/vendors/ARM/heads/arm-perf-staging)] libstdc++ Two simplifications for lexicographical_compare
Date: Fri, 17 Jul 2020 13:24:45 +0000 (GMT)	[thread overview]
Message-ID: <20200717132445.852BA3A5B02B@sourceware.org> (raw)

https://gcc.gnu.org/g:113f0a639dbdd78048373a253ec64145ead7d29d

commit 113f0a639dbdd78048373a253ec64145ead7d29d
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Feb 26 15:19:44 2020 +0000

    libstdc++ Two simplifications for lexicographical_compare
    
            * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
            variables in smaller scope and avoid calling ranges::distance when we
            know they are pointers. Remove statically-unreachable use of
            __builtin_unreachable().
            * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
            Define inline.

Diff:
---
 libstdc++-v3/ChangeLog                   |  7 +++++++
 libstdc++-v3/include/bits/ranges_algo.h  | 10 ++++------
 libstdc++-v3/include/bits/stl_algobase.h | 21 ++++++++-------------
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c13d6fc48f4..d545526d93a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,12 @@
 2020-02-26  Jonathan Wakely  <jwakely@redhat.com>
 
+	* include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
+	variables in smaller scope and avoid calling ranges::distance when we
+	know they are pointers. Remove statically-unreachable use of
+	__builtin_unreachable().
+	* include/bits/stl_algobase.h (__lexicographical_compare::__lc):
+	Define inline.
+
 	* include/std/ranges (__detail::__maybe_empty_t): Define new helper
 	alias.
 	(__detail::__maybe_const_t): Likewise.
diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 7d7dbf04103..05c0851d411 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -3464,9 +3464,6 @@ namespace ranges
 		 && sized_sentinel_for<_Sent2, _Iter2>);
 	    if constexpr (__sized_iters)
 	      {
-		auto __d1 = ranges::distance(__first1, __last1);
-		auto __d2 = ranges::distance(__first2, __last2);
-
 		using _ValueType1 = iter_value_t<_Iter1>;
 		using _ValueType2 = iter_value_t<_Iter2>;
 		constexpr bool __use_memcmp
@@ -3480,6 +3477,9 @@ namespace ranges
 		     && is_same_v<_Proj2, identity>);
 		if constexpr (__use_memcmp)
 		  {
+		    const auto __d1 = __last1 - __first1;
+		    const auto __d2 = __last2 - __first2;
+
 		    if (const auto __len = std::min(__d1, __d2))
 		      {
 			const auto __c
@@ -3498,10 +3498,8 @@ namespace ranges
 			    if (__c < 0)
 			      return false;
 			  }
-			else
-			  __builtin_unreachable();
 		      }
-		    return (__last1 - __first1 < __last2 - __first2);
+		    return __d1 < __d2;
 		  }
 	      }
 
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
index 268569336b0..e4f7fa417ed 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -1254,21 +1254,16 @@ _GLIBCXX_END_NAMESPACE_CONTAINER
     {
       template<typename _II1, typename _II2>
 	_GLIBCXX20_CONSTEXPR
-	static bool __lc(_II1, _II1, _II2, _II2);
+	static bool
+	__lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
+	{
+	  using __gnu_cxx::__ops::__iter_less_iter;
+	  return std::__lexicographical_compare_impl(__first1, __last1,
+						     __first2, __last2,
+						     __iter_less_iter());
+	}
     };
 
-  template<bool _BoolType>
-    template<typename _II1, typename _II2>
-      _GLIBCXX20_CONSTEXPR
-      bool
-      __lexicographical_compare<_BoolType>::
-      __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
-      {
-	return std::__lexicographical_compare_impl(__first1, __last1,
-						   __first2, __last2,
-					__gnu_cxx::__ops::__iter_less_iter());
-      }
-
   template<>
     struct __lexicographical_compare<true>
     {


                 reply	other threads:[~2020-07-17 13:24 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200717132445.852BA3A5B02B@sourceware.org \
    --to=tnfchris@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    --cc=libstdc++-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).