[libcxx-commits] [libcxx] [libc++] Use builtin for `std::is_sufficiently_aligned` (PR #173582)
David Bayer via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Dec 25 14:34:54 PST 2025
https://github.com/davebayer created https://github.com/llvm/llvm-project/pull/173582
This PR makes `std::is_sufficiently_aligned` use clang's `__builtin_is_aligned` builtin if available.
>From 2d3eee7b96f74349962e37e9a812bfbea641f01a Mon Sep 17 00:00:00 2001
From: David Bayer <bayer.david99 at gmail.com>
Date: Thu, 25 Dec 2025 23:29:50 +0100
Subject: [PATCH] Use builtin for `std::is_sufficiently_aligned`
---
libcxx/include/__memory/is_sufficiently_aligned.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libcxx/include/__memory/is_sufficiently_aligned.h b/libcxx/include/__memory/is_sufficiently_aligned.h
index 4280920cabb4b..6754a4c17e149 100644
--- a/libcxx/include/__memory/is_sufficiently_aligned.h
+++ b/libcxx/include/__memory/is_sufficiently_aligned.h
@@ -24,7 +24,11 @@ _LIBCPP_BEGIN_NAMESPACE_STD
template <size_t _Alignment, class _Tp>
_LIBCPP_HIDE_FROM_ABI bool is_sufficiently_aligned(_Tp* __ptr) {
+#if __has_builtin(__builtin_is_aligned)
+ return __builtin_is_aligned(__ptr, _Alignment);
+#else
return reinterpret_cast<uintptr_t>(__ptr) % _Alignment == 0;
+#endif
}
#endif // _LIBCPP_STD_VER >= 26
More information about the libcxx-commits
mailing list