================ @@ -0,0 +1,545 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP___VECTOR_LAYOUT_H +#define _LIBCPP___VECTOR_LAYOUT_H + +#include <__assert> +#include <__config> +#include <__debug_utils/sanitizers.h> +#include <__memory/allocator_traits.h> +#include <__memory/compressed_pair.h> +#include <__memory/pointer_traits.h> +#include <__memory/swap_allocator.h> +#include <__memory/uninitialized_algorithms.h> +#include <__split_buffer> +#include <__type_traits/is_nothrow_constructible.h> +#include <__utility/exchange.h> +#include <__utility/move.h> +#include <__utility/swap.h> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +/// Defines `std::vector`'s storage layout and any operations that are affected by a change in the +/// layout. +/// +/// `std::vector` can be represented in a variety of ways. Each representation strongly influences +/// the codegen when calling vector operations, which can significantly impact runtime performance +/// and memory utilisation. libc++ provides two alternative layouts for `std::vector`, although only +/// one can be active for an enitre binary: ---------------- ldionne wrote:
```suggestion /// one can be active for an entire binary: ``` https://github.com/llvm/llvm-project/pull/155330 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
