forked from OSchip/llvm-project
Remove the unnecessary `is_nothrow_swappable` condition in `swap`.
Thanks to @lewissbaker who pointed out the unnecessary condition in https://reviews.llvm.org/D81954#inline-756872. Since this codepath does not make use of `swap` anyway (that codepath is a different branch), we can safely remove this condition and produce better codegen when all types are nothrow movable but are potentially-throwing swappable. See codegen in https://gcc.godbolt.org/z/uDFZjz Reviewed By: ldionne, #libc Differential Revision: https://reviews.llvm.org/D83274
This commit is contained in:
parent
82206e7fb4
commit
6ab3208d77
|
@ -1063,8 +1063,7 @@ public:
|
|||
}
|
||||
__impl __tmp(_VSTD::move(*__rhs));
|
||||
#ifndef _LIBCPP_NO_EXCEPTIONS
|
||||
if constexpr (__all<(is_nothrow_move_constructible_v<_Types> &&
|
||||
is_nothrow_swappable_v<_Types>)...>::value) {
|
||||
if constexpr (__all<is_nothrow_move_constructible_v<_Types>...>::value) {
|
||||
this->__generic_construct(*__rhs, _VSTD::move(*__lhs));
|
||||
} else {
|
||||
// EXTENSION: When the move construction of `__lhs` into `__rhs` throws
|
||||
|
|
Loading…
Reference in New Issue