mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-13 10:42:05 +00:00
[libcxx] Use the unoptimized routines for volatile source types
As reported in: D147741 Reviewers: philnik, var-const, ldionne, hans Differential Revision: https://reviews.llvm.org/D152571
This commit is contained in:
parent
5217e7756c
commit
8100aa4c02
@ -573,7 +573,7 @@ template <class _Alloc,
|
||||
__enable_if_t<
|
||||
// using _RawTypeIn because of the allocator<T const> extension
|
||||
is_trivially_copy_constructible<_RawTypeIn>::value && is_trivially_copy_assignable<_RawTypeIn>::value &&
|
||||
is_same<__remove_cv_t<_In>, __remove_cv_t<_Out> >::value &&
|
||||
is_same<__remove_const_t<_In>, __remove_const_t<_Out> >::value &&
|
||||
__allocator_has_trivial_copy_construct<_Alloc, _RawTypeIn>::value>* = nullptr>
|
||||
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Out*
|
||||
__uninitialized_allocator_copy_impl(_Alloc&, _In* __first1, _In* __last1, _Out* __first2) {
|
||||
|
@ -100,11 +100,20 @@ TEST_CONSTEXPR_CXX20 bool tests() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void test_copy_from_volatile_src() {
|
||||
volatile int src[] = {1, 2, 3};
|
||||
std::vector<int> v(src, src + 3);
|
||||
assert(v[0] == 1);
|
||||
assert(v[1] == 2);
|
||||
assert(v[2] == 3);
|
||||
}
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
tests();
|
||||
#if TEST_STD_VER > 17
|
||||
static_assert(tests());
|
||||
#endif
|
||||
test_copy_from_volatile_src();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user