Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[libc++] Remove unnecessary assignments #78678

Closed
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 7 additions & 16 deletions libcxx/include/vector
Original file line number Diff line number Diff line change
Expand Up @@ -1459,26 +1459,20 @@ vector<_Tp, _Allocator>::__push_back_slow_path(_Up&& __x) {
template <class _Tp, class _Allocator>
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline _LIBCPP_HIDE_FROM_ABI void
vector<_Tp, _Allocator>::push_back(const_reference __x) {
pointer __end = this->__end_;
if (__end < this->__end_cap()) {
if (this->__end_ < this->__end_cap()) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was added in 6fe4e03, which optimized std::vector. Removing those would be a performance regression. Unfortunately we have benchmarks but no automated performance regression tests right now.

__construct_one_at_end(__x);
++__end;
} else {
__end = __push_back_slow_path(__x);
__push_back_slow_path(__x);
}
this->__end_ = __end;
}

template <class _Tp, class _Allocator>
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline _LIBCPP_HIDE_FROM_ABI void vector<_Tp, _Allocator>::push_back(value_type&& __x) {
pointer __end = this->__end_;
if (__end < this->__end_cap()) {
if (this->__end_ < this->__end_cap()) {
__construct_one_at_end(std::move(__x));
++__end;
} else {
__end = __push_back_slow_path(std::move(__x));
__push_back_slow_path(std::move(__x));
}
this->__end_ = __end;
}

template <class _Tp, class _Allocator>
Expand All @@ -1503,16 +1497,13 @@ _LIBCPP_CONSTEXPR_SINCE_CXX20 inline
void
#endif
vector<_Tp, _Allocator>::emplace_back(_Args&&... __args) {
pointer __end = this->__end_;
if (__end < this->__end_cap()) {
if (this->__end_ < this->__end_cap()) {
__construct_one_at_end(std::forward<_Args>(__args)...);
++__end;
} else {
__end = __emplace_back_slow_path(std::forward<_Args>(__args)...);
__emplace_back_slow_path(std::forward<_Args>(__args)...);
}
this->__end_ = __end;
#if _LIBCPP_STD_VER >= 17
return *(__end - 1);
return *(this->__end_ - 1);
#endif
}

Expand Down