mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 00:36:34 +00:00
[libc++] Also provide an alignment assumption for vector in C++03 mode (#124839)
There's no reason not to, and it's easy enough to do using enable_if. As a drive-by change, also add a missing _LIBCPP_NO_CFI attribute on __add_alignment_assumption.
This commit is contained in:
parent
8c36665267
commit
ccb08b9dab
@ -783,14 +783,18 @@ private:
|
||||
|
||||
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(vector&, false_type) _NOEXCEPT {}
|
||||
|
||||
static _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pointer __add_alignment_assumption(pointer __p) _NOEXCEPT {
|
||||
#ifndef _LIBCPP_CXX03_LANG
|
||||
if constexpr (is_pointer<pointer>::value) {
|
||||
if (!__libcpp_is_constant_evaluated()) {
|
||||
return static_cast<pointer>(__builtin_assume_aligned(__p, alignof(decltype(*__p))));
|
||||
}
|
||||
template <class _Ptr = pointer, __enable_if_t<is_pointer<_Ptr>::value, int> = 0>
|
||||
static _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI _LIBCPP_NO_CFI pointer
|
||||
__add_alignment_assumption(_Ptr __p) _NOEXCEPT {
|
||||
if (!__libcpp_is_constant_evaluated()) {
|
||||
return static_cast<pointer>(__builtin_assume_aligned(__p, _LIBCPP_ALIGNOF(decltype(*__p))));
|
||||
}
|
||||
#endif
|
||||
return __p;
|
||||
}
|
||||
|
||||
template <class _Ptr = pointer, __enable_if_t<!is_pointer<_Ptr>::value, int> = 0>
|
||||
static _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI _LIBCPP_NO_CFI pointer
|
||||
__add_alignment_assumption(_Ptr __p) _NOEXCEPT {
|
||||
return __p;
|
||||
}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user