]> gcc.gnu.org Git - gcc.git/commit
libstdc++: Fix conditions for using memcmp in std::lexicographical_compare_three_way...
authorJonathan Wakely <jwakely@redhat.com>
Tue, 27 Feb 2024 17:50:34 +0000 (17:50 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 29 Feb 2024 17:49:43 +0000 (17:49 +0000)
commitf5cdda8acb06c20335855ed353ab9a441c12128a
tree8df77bcbdf56b60866f60d5aad613ecfbe00809f
parent2f43ad6a60adb8dd4af9a3c78dfe78597e891c9e
libstdc++: Fix conditions for using memcmp in std::lexicographical_compare_three_way [PR113960]

The change in r11-2981-g2f983fa69005b6 meant that
std::lexicographical_compare_three_way started to use memcmp for
unsigned integers on big endian targets, but for that to be valid we
need the two value types to have the same size and we need to use that
size to compute the length passed to memcmp.

I already defined a __is_memcmp_ordered_with trait that does the right
checks, std::lexicographical_compare_three_way just needs to use it.

libstdc++-v3/ChangeLog:

PR libstdc++/113960
* include/bits/stl_algobase.h (__is_byte_iter): Replace with ...
(__memcmp_ordered_with): New concept.
(lexicographical_compare_three_way): Use __memcmp_ordered_with
instead of __is_byte_iter. Use correct length for memcmp.
* testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc:
New test.
libstdc++-v3/include/bits/stl_algobase.h
libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc [new file with mode: 0644]
This page took 0.060236 seconds and 5 git commands to generate.