[libcxx-commits] [libcxx] [libc++][modularization] Get rid of <cstddef> dependency in __datasizeof (PR #107394)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Sep 5 05:33:12 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Louis Dionne (ldionne)
<details>
<summary>Changes</summary>
All the compilers we support also provide __builtin_offsetof, so avoid using this macro and use the builtin directly instead. This allows removing a dependency on `<cstddef>`, which is heavier than we need.
---
Full diff: https://github.com/llvm/llvm-project/pull/107394.diff
1 Files Affected:
- (modified) libcxx/include/__type_traits/datasizeof.h (+5-5)
``````````diff
diff --git a/libcxx/include/__type_traits/datasizeof.h b/libcxx/include/__type_traits/datasizeof.h
index b4cbd1ddfa8deb..7e6e8ada635bae 100644
--- a/libcxx/include/__type_traits/datasizeof.h
+++ b/libcxx/include/__type_traits/datasizeof.h
@@ -10,9 +10,9 @@
#define _LIBCPP___TYPE_TRAITS_DATASIZEOF_H
#include <__config>
+#include <__cstddef/size_t.h>
#include <__type_traits/is_class.h>
#include <__type_traits/is_final.h>
-#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
@@ -37,15 +37,15 @@ struct _FirstPaddingByte {
char __first_padding_byte_;
};
-// _FirstPaddingByte<> is sometimes non-standard layout. Using `offsetof` is UB in that case, but GCC and Clang allow
-// the use as an extension.
+// _FirstPaddingByte<> is sometimes non-standard layout.
+// Using `__builtin_offsetof` is UB in that case, but GCC and Clang allow the use as an extension.
_LIBCPP_DIAGNOSTIC_PUSH
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Winvalid-offsetof")
_LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Winvalid-offsetof")
template <class _Tp>
-inline const size_t __datasizeof_v = offsetof(_FirstPaddingByte<_Tp>, __first_padding_byte_);
+inline const size_t __datasizeof_v = __builtin_offsetof(_FirstPaddingByte<_Tp>, __first_padding_byte_);
_LIBCPP_DIAGNOSTIC_POP
-#endif // __has_extension(datasizeof)
+#endif // __has_extension(datasizeof)
_LIBCPP_END_NAMESPACE_STD
``````````
</details>
https://github.com/llvm/llvm-project/pull/107394
More information about the libcxx-commits
mailing list