https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/125860
Backport ccb08b9 Requested by: @ldionne >From c17d86fa59ade7b180e0de2df91a3e425b06e132 Mon Sep 17 00:00:00 2001 From: Louis Dionne <ldionn...@gmail.com> Date: Wed, 5 Feb 2025 08:57:22 -0500 Subject: [PATCH] [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. (cherry picked from commit ccb08b9dab7d829f8d9703d8b46b98e2d6717d0e) --- libcxx/include/__vector/vector.h | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libcxx/include/__vector/vector.h b/libcxx/include/__vector/vector.h index 66cb622e209633..bad676a56a8e64 100644 --- a/libcxx/include/__vector/vector.h +++ b/libcxx/include/__vector/vector.h @@ -783,14 +783,18 @@ class _LIBCPP_TEMPLATE_VIS vector { _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; } }; _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits