gcc/libstdc++-v3/include/bits
Jonathan Wakely dfc537e554 libstdc++: Remove redundant clock conversions in atomic waits
For the case where a timeout is specified using the system_clock we
perform a conversion to the preferred clock (which is either
steady_clock or system_clock itself), wait using __cond_wait_until_impl,
and then check the time by that clock again to see if it was reached.
This is entirely redundant, as we can just call __cond_wait_until_impl
directly. It will wait using the specified clock, and there's no need to
check the time twice. For the no_timeout case this removes two
unnecessary calls to the clock's now() function, and for the timeout
case it removes three calls.

libstdc++-v3/ChangeLog:

	* include/bits/atomic_timed_wait.h (__cond_wait_until): Do not
	perform redundant conversions to the same clock.
2020-11-25 18:24:13 +00:00
..
algorithmfwd.h
align.h libstdc++: Fix overflow handling in std::align 2020-09-22 17:49:48 +01:00
alloc_traits.h libstdc++: Add remaining C++20 additions to <sstream> [P0408R7] 2020-11-10 19:22:47 +00:00
allocated_ptr.h
allocator.h
atomic_base.h libstdc++: make atomic waiting depend on gthreads or futexes 2020-11-23 18:12:39 +00:00
atomic_futex.h libstdc++: Use correct duration for atomic_futex wait on custom clock [PR 91486] 2020-10-05 11:32:10 +01:00
atomic_timed_wait.h libstdc++: Remove redundant clock conversions in atomic waits 2020-11-25 18:24:13 +00:00
atomic_wait.h libstdc++: Encapsulate __gthread_cond_t as std::__condvar 2020-11-25 18:24:13 +00:00
basic_ios.h
basic_ios.tcc
basic_string.h libstdc++: Define some std::string constructors inline 2020-10-14 12:52:47 +01:00
basic_string.tcc libstdc++: Define some std::string constructors inline 2020-10-14 12:52:47 +01:00
boost_concept_check.h
c++0x_warning.h
c++config libstdc++: Use __is_same instead of __is_same_as 2020-09-30 18:41:12 +01:00
char_traits.h
charconv.h
codecvt.h libstdc++: Fix some -Wunused-parameter warnings 2020-09-10 17:09:16 +01:00
concept_check.h
cpp_type_traits.h libstdc++: Define type traits for wchar_t even when libc support missing 2020-11-01 11:39:07 +00:00
deque.tcc libstdc++: Fix three-way comparison for std::array [PR 96851] 2020-09-02 15:32:11 +01:00
enable_special_members.h
erase_if.h
forward_list.h
forward_list.tcc libstdc++: Implement DR 526 on [forward_]list remove_if/unique [PR 91620] 2020-08-11 21:30:05 +02:00
fs_dir.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
fs_fwd.h
fs_ops.h
fs_path.h libstdc++: Add noexcept to declaration of path::_List members 2020-10-27 14:50:37 +00:00
fstream.tcc libstdc++: Override BUFSIZ for Windows targets [PR 94268] 2020-10-28 13:19:21 +00:00
functexcept.h libstdc++: Make allocators throw bad_array_new_length on overflow [LWG 3190] 2020-10-05 15:18:56 +01:00
functional_hash.h
gslice_array.h
gslice.h
hashtable_policy.h libstdc++: Use double for unordered container load factors [PR 96958] 2020-10-31 00:52:57 +00:00
hashtable.h libstdc++: Refactor _Hashtable to prepare for custom pointers 2020-10-20 21:30:22 +02:00
indirect_array.h
invoke.h
ios_base.h libstdc++: Add C++11 member functions for ios::failure in old ABI 2020-10-08 14:45:37 +01:00
istream.tcc libstdc++: Do not set eofbit eagerly in operator>>(istream&, char(&)[N]) 2020-08-06 19:23:14 +01:00
iterator_concepts.h libstdc++: Fix missing subsumption in std::iterator_traits [PR 97935] 2020-11-25 17:22:47 +00:00
list.tcc libstdc++: Implement DR 526 on [forward_]list remove_if/unique [PR 91620] 2020-08-11 21:30:05 +02:00
locale_classes.h
locale_classes.tcc
locale_conv.h libstdc++: Fix -Wsign-compare warnings in headers 2020-10-27 16:32:53 +00:00
locale_facets_nonio.h
locale_facets_nonio.tcc libstdc++: Fix -Wsign-compare warnings in headers 2020-10-27 16:32:53 +00:00
locale_facets.h
locale_facets.tcc
localefwd.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
mask_array.h
max_size_type.h libstdc++: integer-class types as per [iterator.concept.winc] 2020-08-19 09:12:55 -04:00
memoryfwd.h
move.h libstdc++: _Rb_tree code cleanup, remove lambdas 2020-11-20 20:56:10 +01:00
node_handle.h libstdc++: Optimize container node-handle type for size 2020-10-19 18:06:51 +01:00
ostream_insert.h
ostream.tcc
parse_numbers.h libstdc++: Fix some warnings in headers 2020-10-29 22:47:22 +00:00
postypes.h
predefined_ops.h
ptr_traits.h
quoted_string.h
random.h libstdc++: Prefer double to long double in std::shuffle_order_engine 2020-10-31 12:54:03 +00:00
random.tcc libstdc++: Prefer double to long double in std::shuffle_order_engine 2020-10-31 12:54:03 +00:00
range_access.h libstdc++: Introduce new headers for C++20 ranges components 2020-09-22 15:45:54 +01:00
ranges_algo.h libstdc++: Fix ranges::search_n for random access iterators [PR97828] 2020-11-17 10:28:20 -05:00
ranges_algobase.h libstdc++: Introduce new headers for C++20 ranges components 2020-09-22 15:45:54 +01:00
ranges_base.h libstdc++: Introduce new headers for C++20 ranges components 2020-09-22 15:45:54 +01:00
ranges_cmp.h libstdc++: Introduce new headers for C++20 ranges components 2020-09-22 15:45:54 +01:00
ranges_uninitialized.h libstdc++: Make ranges::construct_at constexpr-friendly [PR95788] 2020-10-08 18:10:05 -04:00
ranges_util.h libstdc++: Avoid narrowing conversion in subrange constructor 2020-10-29 22:47:22 +00:00
refwrap.h
regex_automaton.h
regex_automaton.tcc
regex_compiler.h
regex_compiler.tcc libstdc++: Fix some warnings in headers 2020-10-29 11:43:55 +00:00
regex_constants.h
regex_error.h libstdc++: Fix build error in <bits/regex_error.h> 2020-09-11 14:52:40 +01:00
regex_executor.h
regex_executor.tcc
regex_scanner.h
regex_scanner.tcc
regex.h libstdc++: Fix some warnings in headers 2020-10-29 11:43:55 +00:00
regex.tcc
semaphore_base.h libstdc++: Fix variable declared with wrong type 2020-11-23 18:16:44 +00:00
shared_ptr_atomic.h
shared_ptr_base.h libstdc++: Fix some warnings in headers 2020-10-29 11:43:55 +00:00
shared_ptr.h libstdc++: Reduce header dependencies in and on <memory> 2020-10-22 18:42:03 +01:00
slice_array.h
specfun.h
sstream.tcc libstdc++: Fix -Wsign-compare warnings in headers 2020-10-27 16:32:53 +00:00
std_abs.h
std_function.h libstdc++: Include <typeinfo> even for -fno-rtti [PR 97758] 2020-11-09 14:28:37 +00:00
std_mutex.h libstdc++: Encapsulate __gthread_cond_t as std::__condvar 2020-11-25 18:24:13 +00:00
std_thread.h libstdc++: Avoid calling undefined __gthread_self weak symbol [PR 95989] 2020-11-19 21:07:06 +00:00
stl_algo.h libstdc++: Limit memory allocation in stable_sort/inplace_merge (PR 83938) 2020-11-20 22:25:04 +01:00
stl_algobase.h libstdc++: Fix documentation for return values of copy algos 2020-10-12 18:14:01 +01:00
stl_bvector.h libstdc++: Fix and improve std::vector<bool> implementation. 2020-07-31 23:18:51 +02:00
stl_construct.h
stl_deque.h libstdc++: Make self-move well-defined for containers [PR 85828] 2020-08-12 20:36:00 +01:00
stl_function.h
stl_heap.h
stl_iterator_base_funcs.h
stl_iterator_base_types.h
stl_iterator.h libstdc++: Add missing P0896 changes to <iterator> 2020-10-02 10:51:31 -04:00
stl_list.h libstdc++: Make self-move well-defined for containers [PR 85828] 2020-08-12 20:36:00 +01:00
stl_map.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
stl_multimap.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
stl_multiset.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
stl_numeric.h
stl_pair.h libstdc++: Remove redundant std:: qualification 2020-06-19 15:02:54 +01:00
stl_queue.h
stl_raw_storage_iter.h
stl_relops.h
stl_set.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
stl_stack.h
stl_tempbuf.h libstdc++: Limit memory allocation in stable_sort/inplace_merge (PR 83938) 2020-11-20 22:25:04 +01:00
stl_tree.h libstdc++: _Rb_tree code cleanup, remove lambdas 2020-11-20 20:56:10 +01:00
stl_uninitialized.h libstdc++: Fix some -Wsystem-headers warnings (PR 95765) 2020-06-19 18:20:05 +01:00
stl_vector.h
stream_iterator.h
streambuf_iterator.h
streambuf.tcc
string_view.tcc
stringfwd.h
uniform_int_dist.h libstdc++: Improve comment on _Power_of_2 helper function 2020-11-09 14:54:29 +00:00
unique_lock.h
unique_ptr.h libstdc++: Implement std::make_unique_for_overwrite 2020-10-19 22:11:39 +01:00
unordered_map.h libstdc++: Fix unordered containers move constructors noexcept qualification 2020-07-29 11:26:42 +02:00
unordered_set.h libstdc++: Fix unordered containers move constructors noexcept qualification 2020-07-29 11:26:42 +02:00
uses_allocator_args.h libstdc++: Reduce header dependencies in and on <memory> 2020-10-22 18:42:03 +01:00
uses_allocator.h
valarray_after.h libstdc++: Fix name clash with _Cosh in QNX headers [PR 95592] 2020-10-28 12:35:44 +00:00
valarray_array.h
valarray_array.tcc
valarray_before.h
vector.tcc