From 78f8f299355f7a6287136644c7246bc480aceef0 Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Fri, 21 Jun 2024 08:31:05 +0200 Subject: [PATCH 1/2] std_darwin.modulemap: Remove headers for MacOSX15.0.sdk Manually curating the modulemap is far from ideal because it requires updates for changes in the libc++ library shipped with the SDK, which must also work across all supported SDK versions. An alternative would be to locate the modulemap shipped with libc++ during configuration time, copy it and dynamically modify its contents to suit our needs. --- .../cling/include/cling/std_darwin.modulemap | 56 +------------------ 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/interpreter/cling/include/cling/std_darwin.modulemap b/interpreter/cling/include/cling/std_darwin.modulemap index f0f6a6d36f036..1628b291c0c4f 100644 --- a/interpreter/cling/include/cling/std_darwin.modulemap +++ b/interpreter/cling/include/cling/std_darwin.modulemap @@ -450,10 +450,6 @@ module std_inttypes_h [system] { export * } // provided by compiler. -module std_limits_h [system] { - header "limits.h" - export * -} module std_locale_h [system] { header "locale.h" export * @@ -462,10 +458,7 @@ module std_math_h [system] { header "math.h" export * } -module std_setjmp_h [system] { - header "setjmp.h" - export * -} +// provided by C library. // provided by C library. // FIXME: is missing. // provided by compiler. @@ -522,71 +515,26 @@ module std_wctype_h [system] { // Experimental C++ standard library interfaces module std_experimental [system] { - module deque { - header "experimental/deque" - export * - } - module forward_list { - header "experimental/forward_list" - export * - } module iterator { header "experimental/iterator" export * } - module list { - header "experimental/list" - export * - } - module map { - header "experimental/map" - export * - } - module memory_resource { - header "experimental/memory_resource" - export * - } module propagate_const { header "experimental/propagate_const" export * } - module regex { - - header "experimental/regex" - export * - } module simd { header "experimental/simd" export * } - module set { - header "experimental/set" - export * - } - module string { - header "experimental/string" - export * - } module type_traits { header "experimental/type_traits" export * } - module unordered_map { - header "experimental/unordered_map" - export * - } - module unordered_set { - header "experimental/unordered_set" - export * - } module utility { header "experimental/utility" export * } - module vector { - header "experimental/vector" - export * - } module __config { private textual header "experimental/__config" export * @@ -1983,7 +1931,6 @@ module std_private_type_traits_nat [system module std_private_type_traits_negation [system] { header "__type_traits/negation.h" } module std_private_type_traits_noexcept_move_assign_container [system] { header "__type_traits/noexcept_move_assign_container.h" } module std_private_type_traits_operation_traits [system] { header "__type_traits/operation_traits.h" } -module std_private_type_traits_predicate_traits [system] { header "__type_traits/predicate_traits.h" } module std_private_type_traits_promote [system] { header "__type_traits/promote.h" } module std_private_type_traits_rank [system] { header "__type_traits/rank.h" } module std_private_type_traits_remove_all_extents [system] { header "__type_traits/remove_all_extents.h" } @@ -2056,7 +2003,6 @@ module std_private_utility_swap [system] { header "__utility/swap.h" export std_private_type_traits_is_swappable } -module std_private_utility_terminate_on_exception [system] { header "__utility/terminate_on_exception.h" } module std_private_utility_to_underlying [system] { header "__utility/to_underlying.h" } module std_private_utility_unreachable [system] { header "__utility/unreachable.h" } From fbc93480ce71dede248e5334cee7c5658354d2be Mon Sep 17 00:00:00 2001 From: Ian Anderson Date: Fri, 20 Oct 2023 13:23:34 -0700 Subject: [PATCH 2/2] [Modules] textual headers in submodules never resolve their `use`s When an include from a textual header is resolved, the textual header's submodule is used as the requesting module. The submodule's uses are resolved, but that doesn't work because only top level modules have uses, and only the top level module uses are used for checking uses in Module::directlyUses. ModuleMap::resolveUses to resolve the top level module instead of the submodule. --- This fixes the build of std.pcm with MacOSX15.0.sdk. --- .../llvm-project/clang/lib/Lex/ModuleMap.cpp | 13 +++++++------ interpreter/llvm-project/llvm-project.tag | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/interpreter/llvm-project/clang/lib/Lex/ModuleMap.cpp b/interpreter/llvm-project/clang/lib/Lex/ModuleMap.cpp index 5474583a26938..52dcd3abd1c81 100644 --- a/interpreter/llvm-project/clang/lib/Lex/ModuleMap.cpp +++ b/interpreter/llvm-project/clang/lib/Lex/ModuleMap.cpp @@ -1370,16 +1370,17 @@ bool ModuleMap::resolveExports(Module *Mod, bool Complain) { } bool ModuleMap::resolveUses(Module *Mod, bool Complain) { - auto Unresolved = std::move(Mod->UnresolvedDirectUses); - Mod->UnresolvedDirectUses.clear(); + auto *Top = Mod->getTopLevelModule(); + auto Unresolved = std::move(Top->UnresolvedDirectUses); + Top->UnresolvedDirectUses.clear(); for (auto &UDU : Unresolved) { - Module *DirectUse = resolveModuleId(UDU, Mod, Complain); + Module *DirectUse = resolveModuleId(UDU, Top, Complain); if (DirectUse) - Mod->DirectUses.push_back(DirectUse); + Top->DirectUses.push_back(DirectUse); else - Mod->UnresolvedDirectUses.push_back(UDU); + Top->UnresolvedDirectUses.push_back(UDU); } - return !Mod->UnresolvedDirectUses.empty(); + return !Top->UnresolvedDirectUses.empty(); } bool ModuleMap::resolveConflicts(Module *Mod, bool Complain) { diff --git a/interpreter/llvm-project/llvm-project.tag b/interpreter/llvm-project/llvm-project.tag index 6043a0be2bc05..9d3b9b7924d1b 100644 --- a/interpreter/llvm-project/llvm-project.tag +++ b/interpreter/llvm-project/llvm-project.tag @@ -1 +1 @@ -ROOT-llvm16-20240614-01 +ROOT-llvm16-20240621-01