[libcxx-commits] [libcxx] Revert "[libc++][vector] Inline remaining constructors filling vector with the same value" (PR #93020)

via libcxx-commits libcxx-commits at lists.llvm.org
Wed May 22 04:28:59 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: Vitaly Buka (vitalybuka)

<details>
<summary>Changes</summary>

https://lab.llvm.org/buildbot/#/builders/168/builds/20464

Reverts llvm/llvm-project#<!-- -->82068

---
Full diff: https://github.com/llvm/llvm-project/pull/93020.diff


1 Files Affected:

- (modified) libcxx/include/vector (+36-28) 


``````````diff
diff --git a/libcxx/include/vector b/libcxx/include/vector
index b190557fb7b7e..976bde9b9048c 100644
--- a/libcxx/include/vector
+++ b/libcxx/include/vector
@@ -424,36 +424,11 @@ public:
 #endif
       : __end_cap_(nullptr, __a) {
   }
-
-  _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n) {
-    auto __guard = std::__make_exception_guard(__destroy_vector(*this));
-    if (__n > 0) {
-      __vallocate(__n);
-      __construct_at_end(__n);
-    }
-    __guard.__complete();
-  }
-
+  _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n);
 #if _LIBCPP_STD_VER >= 14
-  _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n, const allocator_type& __a)
-      : __end_cap_(nullptr, __a) {
-    auto __guard = std::__make_exception_guard(__destroy_vector(*this));
-    if (__n > 0) {
-      __vallocate(__n);
-      __construct_at_end(__n);
-    }
-    __guard.__complete();
-  }
+  _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit vector(size_type __n, const allocator_type& __a);
 #endif
-
-  _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI vector(size_type __n, const value_type& __x) {
-    auto __guard = std::__make_exception_guard(__destroy_vector(*this));
-    if (__n > 0) {
-      __vallocate(__n);
-      __construct_at_end(__n, __x);
-    }
-    __guard.__complete();
-  }
+  _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI vector(size_type __n, const value_type& __x);
 
   template <__enable_if_t<__is_allocator<_Allocator>::value, int> = 0>
   _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI
@@ -1150,6 +1125,39 @@ _LIBCPP_CONSTEXPR_SINCE_CXX20 void vector<_Tp, _Allocator>::__append(size_type _
   }
 }
 
+template <class _Tp, class _Allocator>
+_LIBCPP_CONSTEXPR_SINCE_CXX20 vector<_Tp, _Allocator>::vector(size_type __n) {
+  auto __guard = std::__make_exception_guard(__destroy_vector(*this));
+  if (__n > 0) {
+    __vallocate(__n);
+    __construct_at_end(__n);
+  }
+  __guard.__complete();
+}
+
+#if _LIBCPP_STD_VER >= 14
+template <class _Tp, class _Allocator>
+_LIBCPP_CONSTEXPR_SINCE_CXX20 vector<_Tp, _Allocator>::vector(size_type __n, const allocator_type& __a)
+    : __end_cap_(nullptr, __a) {
+  auto __guard = std::__make_exception_guard(__destroy_vector(*this));
+  if (__n > 0) {
+    __vallocate(__n);
+    __construct_at_end(__n);
+  }
+  __guard.__complete();
+}
+#endif
+
+template <class _Tp, class _Allocator>
+_LIBCPP_CONSTEXPR_SINCE_CXX20 vector<_Tp, _Allocator>::vector(size_type __n, const value_type& __x) {
+  auto __guard = std::__make_exception_guard(__destroy_vector(*this));
+  if (__n > 0) {
+    __vallocate(__n);
+    __construct_at_end(__n, __x);
+  }
+  __guard.__complete();
+}
+
 template <class _Tp, class _Allocator>
 template <class _InputIterator,
           __enable_if_t<__has_exactly_input_iterator_category<_InputIterator>::value &&

``````````

</details>


https://github.com/llvm/llvm-project/pull/93020


More information about the libcxx-commits mailing list