Skip to content

Commit 2bc86be

Browse files
committed
[libc++] Remove zero size branch from memmove
1 parent a12d012 commit 2bc86be

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

libcxx/include/__string/constexpr_c_functions.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#include <__type_traits/is_equality_comparable.h>
2323
#include <__type_traits/is_integral.h>
2424
#include <__type_traits/is_same.h>
25-
#include <__type_traits/is_trivially_copyable.h>
2625
#include <__type_traits/is_trivially_lexicographically_comparable.h>
2726
#include <__type_traits/remove_cv.h>
2827
#include <__utility/element_count.h>
@@ -225,6 +224,8 @@ __constexpr_memmove(_Tp* __dest, _Up* __src, __element_count __n) {
225224
std::__assign_trivially_copyable(__dest[__i], __src[__i]);
226225
}
227226
}
227+
} else if _LIBCPP_CONSTEXPR (sizeof(_Tp) == __datasizeof_v<_Tp>) {
228+
::__builtin_memmove(__dest, __src, __count * sizeof(_Tp));
228229
} else if (__count > 0) {
229230
::__builtin_memmove(__dest, __src, (__count - 1) * sizeof(_Tp) + __datasizeof_v<_Tp>);
230231
}

0 commit comments

Comments
 (0)