[llvm-branch-commits] [libcxx] [libc++] Add ABI flag to make __tree nodes more compact (PR #147681)
Nikolas Klauser via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Jul 23 04:39:25 PDT 2025
================
@@ -593,6 +594,43 @@ public:
__tree_node_base& operator=(__tree_node_base const&) = delete;
};
+#ifdef _LIBCPP_ABI_TREE_POINTER_INT_PAIR
+template <>
+class __tree_node_base<void*> : public __tree_end_node<__tree_node_base<void*>*> {
+public:
+ using pointer = __tree_node_base<void*>*;
+ using __end_node_pointer _LIBCPP_NODEBUG = __tree_end_node<__tree_node_base<void*>*>*;
+
+ pointer __right_;
+
+private:
+ using __pair_t = __pointer_int_pair<__end_node_pointer, bool, __integer_width(1)>;
----------------
philnik777 wrote:
I don't think that's a good idea. We don't have any way to let a fancy pointer tell us that it has free bits available, so that argument seems rather moot. If we ever have that we'll want to do a sweep of the library to check whether it makes sense anywhere else anyways. It would also require us to allow `__pointer_int_pair` to be larger than the pointer type, which would most likely hide programming errors.
https://github.com/llvm/llvm-project/pull/147681
More information about the llvm-branch-commits
mailing list