aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2021-06-18 19:33:39 -0400
committerPatrick Palka <ppalka@redhat.com>2021-06-18 19:33:39 -0400
commitcc9c94d43dcfa98436152af9c00f011e9dab25f6 (patch)
tree2f588eb09a0135ca675ccfaa3cbc1ba57d435901 /gcc
parenta798b3f15c47be55f535b754932a820b858870a8 (diff)
downloadgcc-cc9c94d43dcfa98436152af9c00f011e9dab25f6.zip
gcc-cc9c94d43dcfa98436152af9c00f011e9dab25f6.tar.gz
gcc-cc9c94d43dcfa98436152af9c00f011e9dab25f6.tar.bz2
libstdc++: Reduce ranges::minmax/minmax_element comparison complexity
This rewrites ranges::minmax and ranges::minmax_element so that it performs at most 3*N/2 many comparisons, as required by the standard. In passing, this also fixes PR100387 by avoiding a premature std::move in ranges::minmax and in std::shift_right. PR libstdc++/100387 libstdc++-v3/ChangeLog: * include/bits/ranges_algo.h (__minmax_fn::operator()): Rewrite to limit comparison complexity to 3*N/2. (__minmax_element_fn::operator()): Likewise. (shift_right): Avoid premature std::move of __result. * testsuite/25_algorithms/minmax/constrained.cc (test04, test05): New tests. * testsuite/25_algorithms/minmax_element/constrained.cc (test02): Likewise.
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions