[all-commits] [llvm/llvm-project] 2af6d7: [libc++] Remove the type_traits includes from limi...

Ian Anderson via All-commits all-commits at lists.llvm.org
Sat Jun 24 10:55:07 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 2af6d79c7e38675a184280a2d6a92550702581f7
      https://github.com/llvm/llvm-project/commit/2af6d79c7e38675a184280a2d6a92550702581f7
  Author: Ian Anderson <iana at apple.com>
  Date:   2023-06-24 (Sat, 24 Jun 2023)

  Changed paths:
    M libcxx/docs/ReleaseNotes.rst
    M libcxx/include/limits
    M libcxx/include/new
    M libcxx/test/libcxx/transitive_includes/cxx03.csv
    M libcxx/test/libcxx/transitive_includes/cxx11.csv
    M libcxx/test/libcxx/transitive_includes/cxx14.csv
    M libcxx/test/libcxx/transitive_includes/cxx17.csv
    M libcxx/test/libcxx/transitive_includes/cxx20.csv

  Log Message:
  -----------
  [libc++] Remove the type_traits includes from limits and new

type_traits is currently unable to include __type_traits/noexcept_move_assign_container.h, because it would cause several include cycles.

type_traits -> __type_traits/noexcept_move_assign_container.h -> __memory/allocator_traits.h -> __memory/construct_at.h -> new -> exception -> type_traits

type_traits -> __type_traits/noexcept_move_assign_container.h -> __memory/allocator_traits.h -> __memory/construct_at.h -> new -> type_traits

type_traits -> __type_traits/noexcept_move_assign_container.h -> __memory/allocator_traits.h -> limits -> type_traits

This is a problem for clang modules after the std mega module is broken up (D144322), because it becomes a module cycle which is a hard error.

Unconditionally remove the type_traits includes from limits and new in all versions, and also remove the exception include from new. (These are already removed in C++23.)

Reviewed By: ldionne, Mordante, #libc

Differential Revision: https://reviews.llvm.org/D153214




More information about the All-commits mailing list