[all-commits] [llvm/llvm-project] 27c833: [libc++] Replace `__compressed_pair` with `[[no_un...

Nikolas Klauser via All-commits all-commits at lists.llvm.org
Mon Sep 16 02:09:19 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 27c83382d83dce0f33ae67abb3bc94977cb3031f
      https://github.com/llvm/llvm-project/commit/27c83382d83dce0f33ae67abb3bc94977cb3031f
  Author: Nikolas Klauser <nikolasklauser at berlin.de>
  Date:   2024-09-16 (Mon, 16 Sep 2024)

  Changed paths:
    M libcxx/docs/ReleaseNotes/20.rst
    M libcxx/include/__config
    M libcxx/include/__configuration/abi.h
    M libcxx/include/__functional/function.h
    M libcxx/include/__hash_table
    M libcxx/include/__memory/compressed_pair.h
    M libcxx/include/__memory/shared_ptr.h
    M libcxx/include/__memory/unique_ptr.h
    M libcxx/include/__split_buffer
    M libcxx/include/__tree
    M libcxx/include/deque
    M libcxx/include/forward_list
    M libcxx/include/future
    M libcxx/include/list
    M libcxx/include/string
    M libcxx/include/vector
    M libcxx/test/libcxx/containers/associative/unord.map/abi.compile.pass.cpp
    M libcxx/test/libcxx/containers/associative/unord.set/abi.compile.pass.cpp
    M libcxx/test/libcxx/containers/sequences/deque/abi.compile.pass.cpp
    M libcxx/test/libcxx/containers/sequences/vector.bool/abi.compile.pass.cpp
    M libcxx/test/libcxx/containers/unord/unord.set/missing_hash_specialization.verify.cpp
    R libcxx/test/libcxx/memory/compressed_pair/compressed_pair.pass.cpp
    M libcxx/test/libcxx/type_traits/datasizeof.compile.pass.cpp
    M libcxx/test/libcxx/utilities/memory/util.smartptr/util.smartptr.shared/libcxx.control_block_layout.pass.cpp
    M libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp
    M libcxx/utils/gdb/libcxx/printers.py
    M libcxx/utils/libcxx/test/features.py

  Log Message:
  -----------
  [libc++] Replace `__compressed_pair` with `[[no_unique_address]]` (#76756)

This significantly simplifies the code, improves compile times and
improves the object layout of types using `__compressed_pair` in the
unstable ABI. The only downside is that this is extremely ABI sensitive
and pedantically breaks the ABI for empty final types, since the address
of the subobject may change. The ABI of the whole object should not be
affected.

Fixes #91266
Fixes #93069



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list