[clang] [libcxx] Reapply "[Clang] Implement resolution for CWG1835 (#92957, #98547)" (PR #100425)
https://github.com/ldionne approved this pull request. libc++ changes LGTM. https://github.com/llvm/llvm-project/pull/100425 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Define `ATOMIC_FLAG_INIT` correctly for C++. (PR #97534)
ldionne wrote: It seems like the bot looks for the command anywhere in any comment :) https://github.com/llvm/llvm-project/pull/97534 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][headers] Including stddef.h always redefines NULL (PR #99727)
ldionne wrote: @ian-twilightcoder You can create an issue if you want, but you can also say /cherry-pick directly from the PR as long as you add the release milestone to it. That being said, the cherry-pick failed so you will need to create a PR manually. https://github.com/llvm/llvm-project/pull/99727 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Define `ATOMIC_FLAG_INIT` correctly for C++. (PR #97534)
ldionne wrote: @AaronBallman Just FYI you can also add the Milestone to the PR directly and use the /cherry-pick command right here. This is a bit simpler. https://github.com/llvm/llvm-project/pull/97534 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][headers] Including stddef.h always redefines NULL (PR #99727)
ldionne wrote: @ian-twilightcoder Cherry-picking is easy. Once this is merged, follow the guidelines here to get it cherry-picked: https://llvm.org/docs/GitHub.html#backporting-fixes-to-the-release-branches Basically you only need to add a comment to this PR like `/cherry-pick COMMIT-SHA` and everything else pretty much happens automatically. https://github.com/llvm/llvm-project/pull/99727 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][headers] Including stddef.h always redefines NULL (PR #99727)
https://github.com/ldionne milestoned https://github.com/llvm/llvm-project/pull/99727 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][headers] Including stddef.h always redefines NULL (PR #99727)
ldionne wrote: @AaronBallman Should this be added to the 19.x milestone and cherry-picked? https://github.com/llvm/llvm-project/pull/99727 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Define `ATOMIC_FLAG_INIT` correctly for C++. (PR #97534)
https://github.com/ldionne approved this pull request. https://github.com/llvm/llvm-project/pull/97534 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libcxx] [Clang] Add __common_type builtin (PR #99473)
@@ -3058,6 +3058,141 @@ void Sema::NoteAllFoundTemplates(TemplateName Name) { } } +static std::optional commonTypeImpl(Sema , + TemplateName BaseTemplate, + SourceLocation TemplateLoc, + ArrayRef Ts) { + auto lookUpCommonType = [&](TemplateArgument T1, + TemplateArgument T2) -> std::optional { +// Don't bother looking for other specializations if both types are +// builtins - users aren't allowed to specialize for them +if (T1.getAsType()->isBuiltinType() && T2.getAsType()->isBuiltinType()) + return commonTypeImpl(S, BaseTemplate, TemplateLoc, {T1, T2}); ldionne wrote: Isn't that infinite recursion? https://github.com/llvm/llvm-project/pull/99473 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libcxx] [Clang] Add __common_type builtin (PR #99473)
@@ -3058,6 +3058,141 @@ void Sema::NoteAllFoundTemplates(TemplateName Name) { } } +static std::optional commonTypeImpl(Sema , + TemplateName BaseTemplate, + SourceLocation TemplateLoc, + ArrayRef Ts) { + auto lookUpCommonType = [&](TemplateArgument T1, + TemplateArgument T2) -> std::optional { +// Don't bother looking for other specializations if both types are +// builtins - users aren't allowed to specialize for them +if (T1.getAsType()->isBuiltinType() && T2.getAsType()->isBuiltinType()) + return commonTypeImpl(S, BaseTemplate, TemplateLoc, {T1, T2}); + +TemplateArgumentListInfo Args; +Args.addArgument(TemplateArgumentLoc( +T1, S.Context.getTrivialTypeSourceInfo(T1.getAsType(; +Args.addArgument(TemplateArgumentLoc( +T2, S.Context.getTrivialTypeSourceInfo(T2.getAsType(; +QualType BaseTemplateInst = +S.CheckTemplateIdType(BaseTemplate, TemplateLoc, Args); +if (S.RequireCompleteType(TemplateLoc, BaseTemplateInst, + diag::err_incomplete_type)) + return std::nullopt; +if (QualType Type = S.getTypeMember("type", BaseTemplateInst); +!Type.isNull()) { + return Type; +} +return std::nullopt; + }; + + // Note A: For the common_type trait applied to a template parameter pack T of + // types, the member type shall be either defined or not present as follows: + switch (Ts.size()) { + + // If sizeof...(T) is zero, there shall be no member type. + case 0: +return std::nullopt; + + // If sizeof...(T) is one, let T0 denote the sole type constituting the + // pack T. The member typedef-name type shall denote the same type, if any, as + // common_type_t; otherwise there shall be no member type. + case 1: +return lookUpCommonType(Ts[0], Ts[0]); + + // If sizeof...(T) is two, let the first and second types constituting T be + // denoted by T1 and T2, respectively, and let D1 and D2 denote the same types + // as decay_t and decay_t, respectively. + case 2: { +QualType T1 = Ts[0].getAsType(); +QualType T2 = Ts[1].getAsType(); +QualType D1 = S.BuiltinDecay(T1, {}); +QualType D2 = S.BuiltinDecay(T2, {}); + +// If is_same_v is false or is_same_v is false, let C denote +// the same type, if any, as common_type_t. +if (!S.Context.hasSameType(T1, D1) || !S.Context.hasSameType(T2, D2)) { + return lookUpCommonType(D1, D2); +} + +// Otherwise, if decay_t() : declval())> +// denotes a valid type, let C denote that type. +{ + auto CheckConditionalOperands = + [&](bool ConstRefQual) -> std::optional { +EnterExpressionEvaluationContext UnevaluatedContext( +S, Sema::ExpressionEvaluationContext::Unevaluated); +Sema::SFINAETrap SFINAE(S, /*AccessCheckingSFINAE=*/true); +Sema::ContextRAII TUContext(S, S.Context.getTranslationUnitDecl()); + +// false +OpaqueValueExpr CondExpr({}, S.Context.BoolTy, + ExprValueKind::VK_PRValue); +ExprResult Cond = + +auto EVK = +ConstRefQual ? ExprValueKind::VK_LValue : ExprValueKind::VK_PRValue; +if (ConstRefQual) { + D1.addConst(); + D2.addConst(); +} + +// declval() +OpaqueValueExpr LHSExpr(TemplateLoc, D1, EVK); +ExprResult LHS = + +// declval() +OpaqueValueExpr RHSExpr(TemplateLoc, D2, EVK); +ExprResult RHS = + +ExprValueKind VK = VK_PRValue; +ExprObjectKind OK = OK_Ordinary; + +// decltype(false ? declval() : declval()) +QualType Result = +S.CheckConditionalOperands(Cond, LHS, RHS, VK, OK, TemplateLoc); + +if (Result.isNull() || SFINAE.hasErrorOccurred()) + return std::nullopt; + +// decay_t() : declval())> +return S.BuiltinDecay(Result, TemplateLoc); + }; + + if (auto Res = CheckConditionalOperands(false)) +return Res; + + // Let: + // CREF(A) be add_lvalue_reference_t>, + // COND-RES(X, Y) be + // decltype(false ? declval()() : declval()()). + + // C++20 only + // Otherwise, if COND-RES(CREF(D1), CREF(D2)) denotes a type, let C denote + // the type decay_t. + if (!S.Context.getLangOpts().CPlusPlus20) +return std::nullopt; + return CheckConditionalOperands(true); +} + } + + // If sizeof...(T) is greater than two, let T1, T2, and R, respectively, + // denote the first, second, and (pack of) remaining types constituting T. Let + // C denote the same type, if any, as common_type_t. If there is such + // a type C, the member typedef-name type shall denote the same type, if any, + // as common_type_t. Otherwise, there shall be no member type. + default: { +
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
https://github.com/ldionne approved this pull request. I really like this patch. It introduces the hook we need to clean up a lot of stuff in our CMake and it also adds the flexibility you need to unblock LLVM libc work. I think we ended up in a good place. https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
@@ -784,6 +794,10 @@ config_define_if_not(LIBCXX_ENABLE_WIDE_CHARACTERS _LIBCPP_HAS_NO_WIDE_CHARACTER config_define_if_not(LIBCXX_ENABLE_TIME_ZONE_DATABASE _LIBCPP_HAS_NO_TIME_ZONE_DATABASE) config_define_if_not(LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS) +if (LIBCXX_LIBC STREQUAL "llvm-libc") + config_define(ON _LIBCPP_HAS_LLVM_LIBC) +endif() ldionne wrote: I am not going to block this patch on fixing this, but we don't want to add a new `__config_site` definition every time we add support for a new library / platform. Instead, we should provide control over the implementation of localization used by the library at the CMake level, or a similar solution to prevent the proliferation of boolean flags. https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
@@ -0,0 +1,34 @@ +#=== +# Define targets for linking against the selected C library +# +# After including this file, the following targets are defined: +# - libcxx-libc-headers: An interface target that allows getting access to the +#headers of the selected C library. +# - libcxx-libc-shared: A target representing the selected shared C library. +# - libcxx-libm-shared: A target representing the selected shared C math library. ldionne wrote: Is it not possible to roll this up into the libc target? From the libc++ side, we'd like to have the illusion that `libm` is nothing but an implementation detail of `libc`, kind of like `-latomic`. https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
@@ -27,6 +27,9 @@ if (NOT LIBCXX_USE_COMPILER_RT) endif() endif() +check_cxx_compiler_flag(-nostdlibinc CXX_SUPPORTS_NOSTDLIBINC_FLAG) +check_cxx_compiler_flag(-nolibc CXX_SUPPORTS_NOLIBC_FLAG) ldionne wrote: Those don't seem needed here, at least not in this iteration of the patch. https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
@@ -226,6 +226,15 @@ set(LIBCXX_ABI_DEFINES "" CACHE STRING "A semicolon separated list of ABI macros set(LIBCXX_EXTRA_SITE_DEFINES "" CACHE STRING "Extra defines to add into __config_site") option(LIBCXX_USE_COMPILER_RT "Use compiler-rt instead of libgcc" OFF) +# C Library options --- + +set(LIBCXX_DEFAULT_C_LIBRARY system) +set(LIBCXX_SUPPORTED_C_LIBRARIES system llvm-libc) +set(LIBCXX_LIBC "${LIBCXX_DEFAULT_C_LIBRARY}" CACHE STRING "Specify C library to use. Supported values are ${LIBCXX_SUPPORTED_C_LIBRARIES}.") ldionne wrote: ```suggestion set(LIBCXX_SUPPORTED_C_LIBRARIES system llvm-libc) set(LIBCXX_LIBC "system" CACHE STRING "Specify C library to use. Supported values are ${LIBCXX_SUPPORTED_C_LIBRARIES}.") ``` https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
@@ -0,0 +1,34 @@ +#=== +# Define targets for linking against the selected C library +# +# After including this file, the following targets are defined: +# - libcxx-libc-headers: An interface target that allows getting access to the +#headers of the selected C library. +# - libcxx-libc-shared: A target representing the selected shared C library. +# - libcxx-libm-shared: A target representing the selected shared C math library. +# - libcxx-libc-static: A target representing the selected static C library. +# - libcxx-libm-static: A target representing the selected static C math library. +#=== + +# Link against a system-provided libc +if (LIBCXX_LIBC STREQUAL "system") + add_library(libcxx-libc-headers INTERFACE) + + add_library(libcxx-libc-static INTERFACE) + add_library(libcxx-libm-static INTERFACE) + + add_library(libcxx-libc-shared INTERFACE) + add_library(libcxx-libm-shared INTERFACE) + +# Link against the in-tree LLVM libc +elseif (LIBCXX_LIBC STREQUAL "llvm-libc") + add_library(libcxx-libc-headers INTERFACE) + target_link_libraries(libcxx-libc-headers INTERFACE libc-headers) ldionne wrote: This presumes that llvm-libc has been included before in the CMake tree, so that these targets are defined. I assume you know for a fact that this is the case? https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
https://github.com/ldionne commented: I like this approach much better. In a future refactor, I would move `-nostdlibinc` and `-nostdlib` to the interface target, and eventually libc++abi and libunwind should use those targets too when building. But this is a fine first step. https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
@@ -293,6 +293,7 @@ option(LIBCXX_ENABLE_THREADS "Build libc++ with support for threads." ON) option(LIBCXX_ENABLE_MONOTONIC_CLOCK "Build libc++ with support for a monotonic clock. This option may only be set to OFF when LIBCXX_ENABLE_THREADS=OFF." ON) +option(LIBCXX_USE_LLVM_LIBC "Build libc++ against LLVM libc." OFF) ldionne wrote: I'm not sure how `system-llvm-libc` would differ from `system`, but yeah that sounds about right. https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
@@ -293,6 +293,7 @@ option(LIBCXX_ENABLE_THREADS "Build libc++ with support for threads." ON) option(LIBCXX_ENABLE_MONOTONIC_CLOCK "Build libc++ with support for a monotonic clock. This option may only be set to OFF when LIBCXX_ENABLE_THREADS=OFF." ON) +option(LIBCXX_USE_LLVM_LIBC "Build libc++ against LLVM libc." OFF) ldionne wrote: We have a solution to the same problem for selecting the ABI library: `set(LIBCXX_SUPPORTED_ABI_LIBRARIES none libcxxabi system-libcxxabi libcxxrt libstdc++ libsupc++ vcruntime)`. There's `libcxxabi` (in-tree) and `system-libcxxabi` (whatever libc++abi is installed on the system). https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
@@ -293,6 +293,7 @@ option(LIBCXX_ENABLE_THREADS "Build libc++ with support for threads." ON) option(LIBCXX_ENABLE_MONOTONIC_CLOCK "Build libc++ with support for a monotonic clock. This option may only be set to OFF when LIBCXX_ENABLE_THREADS=OFF." ON) +option(LIBCXX_USE_LLVM_LIBC "Build libc++ against LLVM libc." OFF) ldionne wrote: The benefit of that approach is that we can define how to build against arbitrary new C stdlibs very easily, and we avoid adding more logic than there already is in the `CMakeLists.txt`. I don't mind if we start with only two configurations for this flag, what matters to me is that we use the right approach to introduce this new functionality. https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
https://github.com/ldionne requested changes to this pull request. https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
@@ -293,6 +293,7 @@ option(LIBCXX_ENABLE_THREADS "Build libc++ with support for threads." ON) option(LIBCXX_ENABLE_MONOTONIC_CLOCK "Build libc++ with support for a monotonic clock. This option may only be set to OFF when LIBCXX_ENABLE_THREADS=OFF." ON) +option(LIBCXX_USE_LLVM_LIBC "Build libc++ against LLVM libc." OFF) ldionne wrote: I would like to avoid introducing a CMake setting like this. Instead, we should do something similar to the way we handle ABI choices and provide a pseudo-target that represents the libc we're building against. We can then have a multi-valued option like `LIBCXX_LIBC="llvm-libc|system-libc|musl|etc..."`. https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libc] [libcxx] [libc][libcxx] Support for building libc++ against LLVM libc (PR #99287)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/99287 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libunwind] [libunwind] fix unwinding from signal handler (PR #92291)
ldionne wrote: Is it possible to add a test case for this? https://github.com/llvm/llvm-project/pull/92291 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Diagnose use of deprecated template alias (PR #97619)
ldionne wrote: @premanandrao There are instructions here: https://libcxx.llvm.org/BuildingLibcxx.html#bootstrapping-build You can also use e.g. `run-buildbot` for this job: https://github.com/llvm/llvm-project/blob/c7961538ff5c73ad03cbf2470e56cdc10cedc83b/libcxx/utils/ci/run-buildbot#L366 You will probably need to modify a few things like maybe remove the mentions of `ccache`. https://github.com/llvm/llvm-project/pull/97619 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libunwind] [RISCV] Allow libunwind to build for rv32e (PR #98855)
https://github.com/ldionne commented: This seems reasonable to me, but I have basically no knowledge of risvc or the rv32e ABI so I'll let someone else stamp this. https://github.com/llvm/llvm-project/pull/98855 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [cmake] Add hexagon-linux cmake cache files (PR #98712)
@@ -0,0 +1,25 @@ + +set(CMAKE_EXE_LINKER_FLAGS "-lclang_rt.builtins-hexagon -nostdlib" CACHE STRING "") +set(CMAKE_SHARED_LINKER_FLAGS "-lclang_rt.builtins-hexagon -nostdlib" CACHE STRING "") ldionne wrote: Why are those flags necessary when building for Hexagon? https://github.com/llvm/llvm-project/pull/98712 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [cmake] Add hexagon-linux cmake cache files (PR #98712)
@@ -0,0 +1,25 @@ + +set(CMAKE_EXE_LINKER_FLAGS "-lclang_rt.builtins-hexagon -nostdlib" CACHE STRING "") +set(CMAKE_SHARED_LINKER_FLAGS "-lclang_rt.builtins-hexagon -nostdlib" CACHE STRING "") +set(CMAKE_CXX_COMPILER_TARGET hexagon-unknown-linux-musl CACHE STRING "") + +set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR OFF CACHE BOOL "") +set(LLVM_ENABLE_RUNTIMES "libcxx;libcxxabi;libunwind;compiler-rt" CACHE STRING "") +set(LIBCXX_INCLUDE_BENCHMARKS OFF CACHE BOOL "") +set(LIBCXX_HAS_MUSL_LIBC ON CACHE BOOL "") +set(LIBCXX_INCLUDE_TESTS ON CACHE BOOL "") +set(LIBCXXABI_INCLUDE_TESTS ON CACHE BOOL "") +set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "") +set(LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "") +set(LIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL OFF CACHE BOOL "") +set(LIBCXXABI_ENABLE_SHARED ON CACHE BOOL "") +set(COMPILER_RT_DEFAULT_TARGET_TRIPLE hexagon-unknown-linux-musl CACHE STRING "") +set(COMPILER_RT_BUILD_BUILTINS OFF CACHE BOOL "") +set(COMPILER_RT_BUILD_SANITIZERS ON CACHE BOOL "") +set(COMPILER_RT_SUPPORTED_ARCH hexagon CACHE STRING "") +set(COMPILER_RT_USE_LLVM_UNWINDER ON CACHE BOOL "") ldionne wrote: I don't think those settings belong in this cache? https://github.com/llvm/llvm-project/pull/98712 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [cmake] Add hexagon-linux cmake cache files (PR #98712)
@@ -0,0 +1,25 @@ + ldionne wrote: Meta comment: As part of our support policy, we would like to have a CI job that builds and tests libc++ for Hexagon. I'm not very familiar with that target, but do you think you could set that up? https://github.com/llvm/llvm-project/pull/98712 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [cmake] Add hexagon-linux cmake cache files (PR #98712)
@@ -0,0 +1,25 @@ + +set(CMAKE_EXE_LINKER_FLAGS "-lclang_rt.builtins-hexagon -nostdlib" CACHE STRING "") +set(CMAKE_SHARED_LINKER_FLAGS "-lclang_rt.builtins-hexagon -nostdlib" CACHE STRING "") +set(CMAKE_CXX_COMPILER_TARGET hexagon-unknown-linux-musl CACHE STRING "") + +set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR OFF CACHE BOOL "") +set(LLVM_ENABLE_RUNTIMES "libcxx;libcxxabi;libunwind;compiler-rt" CACHE STRING "") +set(LIBCXX_INCLUDE_BENCHMARKS OFF CACHE BOOL "") +set(LIBCXX_HAS_MUSL_LIBC ON CACHE BOOL "") +set(LIBCXX_INCLUDE_TESTS ON CACHE BOOL "") +set(LIBCXXABI_INCLUDE_TESTS ON CACHE BOOL "") +set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "") +set(LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "") +set(LIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL OFF CACHE BOOL "") ldionne wrote: This is supposed to be determined automatically, not set in cache files. https://github.com/llvm/llvm-project/pull/98712 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [cmake] Add hexagon-linux cmake cache files (PR #98712)
https://github.com/ldionne requested changes to this pull request. https://github.com/llvm/llvm-project/pull/98712 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [cmake] Add hexagon-linux cmake cache files (PR #98712)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/98712 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Diagnose use of deprecated template alias (PR #97619)
ldionne wrote: I just ran the bootstrapping build with this patch applied and ran `check-runtimes`, and nothing failed. This might not be sufficient (perhaps I missed something important), but at first glance it doesn't seem to break anything on our side. https://github.com/llvm/llvm-project/pull/97619 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][driver] Fix -print-libgcc-file-name on Darwin platforms (PR #98325)
https://github.com/ldionne approved this pull request. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][driver] Fix -print-libgcc-file-name on Darwin platforms (PR #98325)
ldionne wrote: The patch LGTM, but I'd like actual Clang folks to stamp this. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][driver] Fix -print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -0,0 +1,97 @@ +// Test the output of -print-libgcc-file-name on Darwin. ldionne wrote: Ack. I think it's reasonable not to try to fix everything in one go since it seems really involved. However, my thinking is more that the Darwin driver is the odd one out here, the driver should be initialized when we construct it, not "lazily" when we compute the arguments. I think it's the only driver which does that, and isn't *that* the source of all our problems? https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang][driver] Fix -print-libgcc-file-name on Darwin platforms (PR #98325)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -356,6 +363,12 @@ class LLVM_LIBRARY_VISIBILITY Darwin : public MachO { void addProfileRTLibs(const llvm::opt::ArgList , llvm::opt::ArgStringList ) const override; + // Return the full path of the compiler-rt library on a Darwin MachO system. + // Those are under /lib/darwin/<...>(.dylib|.a). ldionne wrote: ```suggestion // Those are under /lib/darwin/<...>.a. ``` https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -223,6 +223,11 @@ class LLVM_LIBRARY_VISIBILITY MachO : public ToolChain { // There aren't any profiling libs for embedded targets currently. } + // Return the full path of the compiler-rt library on a Darwin MachO system. + // Those are under /lib/darwin/<...>(.dylib|.a). + std::string getCompilerRT(const llvm::opt::ArgList , StringRef Component, ldionne wrote: I actually don't know much about these targets, they're kinda mysterious to me TBH, so I don't know what to document. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -223,6 +223,13 @@ class LLVM_LIBRARY_VISIBILITY MachO : public ToolChain { // There aren't any profiling libs for embedded targets currently. } + // Return the full path of the compiler-rt library on a non-Darwin MachO + // system. Those are under + // /lib/darwin/macho_embedded/<...>(.dylib|.a). ldionne wrote: ```suggestion // /lib/darwin/macho_embedded/<...>.a. ``` https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -1303,18 +1288,55 @@ void MachO::AddLinkRuntimeLib(const ArgList , ArgStringList , // rpaths. This is currently true from this place, but we need to be // careful if this function is ever called before user's rpaths are emitted. if (Opts & RLO_AddRPath) { -assert(DarwinLibName.ends_with(".dylib") && "must be a dynamic library"); +assert(StringRef(P).ends_with(".dylib") && "must be a dynamic library"); // Add @executable_path to rpath to support having the dylib copied with // the executable. CmdArgs.push_back("-rpath"); CmdArgs.push_back("@executable_path"); -// Add the path to the resource dir to rpath to support using the dylib -// from the default location without copying. +// Add the compiler-rt library's directory to rpath to support using the +// dylib from the default location without copying. CmdArgs.push_back("-rpath"); -CmdArgs.push_back(Args.MakeArgString(Dir)); +CmdArgs.push_back(Args.MakeArgString(llvm::sys::path::parent_path(P))); + } +} + +std::string MachO::getCompilerRT(const ArgList &, StringRef Component, + FileType Type) const { + assert(Type != ToolChain::FT_Object && + "it doesn't make sense to ask for the compiler-rt library name as an " + "object file"); + SmallString<64> MachOLibName = StringRef("libclang_rt"); + // On MachO, the builtins component is not in the library name + if (Component != "builtins") { +MachOLibName += '.'; +MachOLibName += Component; + } + MachOLibName += Type == ToolChain::FT_Shared ? "_dynamic.dylib" : ".a"; ldionne wrote: We only ever have `.a`s in there, so I think we should unconditionally use the `.a` extension to avoid creating confusion. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -0,0 +1,97 @@ +// Test the output of -print-libgcc-file-name on Darwin. ldionne wrote: It looks like the embedded targets are already tested to some extent inside `clang/test/Driver/darwin-embedded.c`. I would add a new test file `clang/test/Driver/darwin-embedded-print-libgcc-file-name.c` and add something like this in it: ``` // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ // RUN: --target=armv7em-apple-darwin \ // RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-HARD_STATIC %s // CHECK-CLANGRT-HARD_STATIC: libclang_rt.hard_static.a // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ // RUN: --target=armv7em-apple-darwin -msoft-float \ // RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-SOFT_STATIC %s // CHECK-CLANGRT-SOFT_STATIC: libclang_rt.soft_static.a // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ // RUN: --target=armv7em-apple-darwin -fPIC \ // RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-HARD_PIC %s // CHECK-CLANGRT-HARD_PIC: libclang_rt.hard_pic.a // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ // RUN: --target=armv7em-apple-darwin -msoft-float -fPIC \ // RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-SOFT_PIC %s // CHECK-CLANGRT-SOFT_PIC: libclang_rt.soft_pic.a ``` I'm not certain what we're testing, but we're testing the behavior that seems to exist today, so at least we'll have coverage for whatever we do today. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -0,0 +1,97 @@ +// Test the output of -print-libgcc-file-name on Darwin. + +// +// All platforms +// + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=x86_64-apple-macos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-MACOS %s +// CHECK-CLANGRT-MACOS: libclang_rt.osx.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-ios \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-IOS %s +// CHECK-CLANGRT-IOS: libclang_rt.ios.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-watchos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-WATCHOS %s +// CHECK-CLANGRT-WATCHOS: libclang_rt.watchos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-tvos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-TVOS %s +// CHECK-CLANGRT-TVOS: libclang_rt.tvos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-driverkit \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-DRIVERKIT %s +// CHECK-CLANGRT-DRIVERKIT: libclang_rt.driverkit.a + +// +// Simulators +// + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-ios-simulator \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-IOS-SIMULATOR %s +// CHECK-CLANGRT-IOS-SIMULATOR: libclang_rt.iossim.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-watchos-simulator \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-WATCHOS-SIMULATOR %s +// CHECK-CLANGRT-WATCHOS-SIMULATOR: libclang_rt.watchossim.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-tvos-simulator \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-TVOS-SIMULATOR %s +// CHECK-CLANGRT-TVOS-SIMULATOR: libclang_rt.tvossim.a + +// +// Check the cc_kext variants +// + +// TODO ldionne wrote: I also can't find how to reach those, so I think it would be reasonable to drop this test. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -0,0 +1,97 @@ +// Test the output of -print-libgcc-file-name on Darwin. + +// +// All platforms +// + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=x86_64-apple-macos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-MACOS %s +// CHECK-CLANGRT-MACOS: libclang_rt.osx.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-ios \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-IOS %s +// CHECK-CLANGRT-IOS: libclang_rt.ios.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-watchos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-WATCHOS %s +// CHECK-CLANGRT-WATCHOS: libclang_rt.watchos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-tvos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-TVOS %s +// CHECK-CLANGRT-TVOS: libclang_rt.tvos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-driverkit \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-DRIVERKIT %s +// CHECK-CLANGRT-DRIVERKIT: libclang_rt.driverkit.a + +// +// Simulators +// + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-ios-simulator \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-IOS-SIMULATOR %s +// CHECK-CLANGRT-IOS-SIMULATOR: libclang_rt.iossim.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-watchos-simulator \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-WATCHOS-SIMULATOR %s +// CHECK-CLANGRT-WATCHOS-SIMULATOR: libclang_rt.watchossim.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-tvos-simulator \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-TVOS-SIMULATOR %s +// CHECK-CLANGRT-TVOS-SIMULATOR: libclang_rt.tvossim.a + +// +// Check the cc_kext variants +// + +// TODO + +// +// Check the sanitizer and profile variants ldionne wrote: ```suggestion // Check the sanitizer and profile variants // While the driver also links in sanitizer-specific dylibs, the result of // -print-libgcc-file-name is the path of the basic compiler-rt library. ``` https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -2230,6 +2239,7 @@ bool Driver::HandleImmediateArgs(const Compilation ) { } if (C.getArgs().hasArg(options::OPT_print_runtime_dir)) { +initDarwinTarget(); ldionne wrote: We should also add tests for this behavior. We were not printing the right directory in the embedded case before your patch, but we were printing the right path in the non-embedded case. I don't know if your patch fixes it. If your patch doesn't fix the embedded case, we could scale down the patch a bit and avoid touching the `OPT_print_runtime_dir` code path (like you did initially) just for the sake of landing this. The incorrect `-print-runtime-dir` result on embedded machO targets could be fixed separately. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
https://github.com/ldionne requested changes to this pull request. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
https://github.com/ldionne ready_for_review https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -0,0 +1,55 @@ +// Test the output of -print-libgcc-file-name on Darwin. + +// +// All platforms +// + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=x86_64-apple-macos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-MACOS %s +// CHECK-CLANGRT-MACOS: libclang_rt.osx.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-ios \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-IOS %s +// CHECK-CLANGRT-IOS: libclang_rt.ios.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-watchos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-WATCHOS %s +// CHECK-CLANGRT-WATCHOS: libclang_rt.watchos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-tvos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-TVOS %s +// CHECK-CLANGRT-TVOS: libclang_rt.tvos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-driverkit \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-DRIVERKIT %s +// CHECK-CLANGRT-DRIVERKIT: libclang_rt.driverkit.a + +// TODO add simulators + +// +// Check the cc_kext variants +// + +// TODO + +// +// Check the sanitizer and profile variants +// + +// TODO ldionne wrote: I'm actually not sure what to do about sanitizers. I am figuring out which libraries we're actually linking by running this command and looking at what we link: ``` echo | xcrun --sdk clang++ -### -fsanitize=address -xc++ - ``` For the sanitizers, I see that we link both `libclang_rt.osx.a` and `libclang_rt.asan_osx_dynamic.dylib`. I am not certain what we should output as the result of `-print-libgcc-file-name`. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -223,6 +223,11 @@ class LLVM_LIBRARY_VISIBILITY MachO : public ToolChain { // There aren't any profiling libs for embedded targets currently. } + // Return the full path of the compiler-rt library on a Darwin MachO system. + // Those are under /lib/darwin/<...>(.dylib|.a). + std::string getCompilerRT(const llvm::opt::ArgList , StringRef Component, ldionne wrote: What is the difference between the MachO `getCompilerRT` and the Darwin one? Probably worth having a sentence or two to make it clear what the difference is! https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -0,0 +1,55 @@ +// Test the output of -print-libgcc-file-name on Darwin. + +// +// All platforms +// + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=x86_64-apple-macos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-MACOS %s +// CHECK-CLANGRT-MACOS: libclang_rt.osx.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-ios \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-IOS %s +// CHECK-CLANGRT-IOS: libclang_rt.ios.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-watchos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-WATCHOS %s +// CHECK-CLANGRT-WATCHOS: libclang_rt.watchos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-tvos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-TVOS %s +// CHECK-CLANGRT-TVOS: libclang_rt.tvos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-driverkit \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-DRIVERKIT %s +// CHECK-CLANGRT-DRIVERKIT: libclang_rt.driverkit.a + +// TODO add simulators + +// +// Check the cc_kext variants +// + +// TODO + +// +// Check the sanitizer and profile variants +// + +// TODO + +// +// Check the dynamic library variants +// ldionne wrote: ```suggestion ``` I think we can get rid of this. We seem to only provide dynamic libraries for the sanitizers. So I suspect what we do is something like: - link in `libclang_rt..a` all the time -- that's the basic compiler-rt stuff - link in `libclang_rt.__dynamic.dylib` when we have sanitizers enabled I suspect that `-print-libgcc-file-name` should simply always print `libclang_rt..a`. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -0,0 +1,55 @@ +// Test the output of -print-libgcc-file-name on Darwin. + +// +// All platforms +// + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=x86_64-apple-macos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-MACOS %s +// CHECK-CLANGRT-MACOS: libclang_rt.osx.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-ios \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-IOS %s +// CHECK-CLANGRT-IOS: libclang_rt.ios.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-watchos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-WATCHOS %s +// CHECK-CLANGRT-WATCHOS: libclang_rt.watchos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-tvos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-TVOS %s +// CHECK-CLANGRT-TVOS: libclang_rt.tvos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-driverkit \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-DRIVERKIT %s +// CHECK-CLANGRT-DRIVERKIT: libclang_rt.driverkit.a + +// TODO add simulators + +// +// Check the cc_kext variants +// + +// TODO + +// +// Check the sanitizer and profile variants +// + +// TODO + +// +// Check the dynamic library variants +// + +// TODO ldionne wrote: Missing newline at the end of the file :) https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -2271,6 +2271,12 @@ bool Driver::HandleImmediateArgs(const Compilation ) { if (C.getArgs().hasArg(options::OPT_print_libgcc_file_name)) { ToolChain::RuntimeLibType RLT = TC.GetRuntimeLibType(C.getArgs()); const llvm::Triple Triple(TC.ComputeEffectiveClangTriple(C.getArgs())); +// The 'Darwin' toolchain is initialized only when its arguments are ldionne wrote: Could we do the same thing but move it way up above so that we initialize it early? I think the same bug exists with `-print-runtime-dir` (line 2232 above). https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] Fix --print-libgcc-file-name on Darwin platforms (PR #98325)
@@ -0,0 +1,55 @@ +// Test the output of -print-libgcc-file-name on Darwin. + +// +// All platforms +// + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=x86_64-apple-macos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-MACOS %s +// CHECK-CLANGRT-MACOS: libclang_rt.osx.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-ios \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-IOS %s +// CHECK-CLANGRT-IOS: libclang_rt.ios.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-watchos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-WATCHOS %s +// CHECK-CLANGRT-WATCHOS: libclang_rt.watchos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-tvos \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-TVOS %s +// CHECK-CLANGRT-TVOS: libclang_rt.tvos.a + +// RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ +// RUN: --target=arm64-apple-driverkit \ +// RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-CLANGRT-DRIVERKIT %s +// CHECK-CLANGRT-DRIVERKIT: libclang_rt.driverkit.a + +// TODO add simulators ldionne wrote: ```suggestion // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ // RUN: --target=arm64-apple-ios-simulator \ // RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-IOS-SIMULATOR %s // CHECK-CLANGRT-IOS-SIMULATOR: libclang_rt.iossim.a // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ // RUN: --target=arm64-apple-watchos-simulator \ // RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-WATCHOS-SIMULATOR %s // CHECK-CLANGRT-WATCHOS-SIMULATOR: libclang_rt.watchossim.a // RUN: %clang -rtlib=compiler-rt -print-libgcc-file-name \ // RUN: --target=arm64-apple-tvos-simulator \ // RUN: -resource-dir=%S/Inputs/resource_dir 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-CLANGRT-TVOS-SIMULATOR %s // CHECK-CLANGRT-TVOS-SIMULATOR: libclang_rt.tvossim.a ``` I think this should do it for the simulators. https://github.com/llvm/llvm-project/pull/98325 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [llvm] [CMake] Use Clang to infer the target triple (PR #89425)
ldionne wrote: > @wzssyqa Is it OK with you if I go ahead and merge this PR? I plan to follow > up with further improvements but this is necessary to fix the build of LLVM > runtime libraries in the bootstrapping build. Is there a filed issue linked to this? https://github.com/llvm/llvm-project/pull/89425 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libunwind] [libunwind] Remove needless `sys/uio.h` (PR #97495)
https://github.com/ldionne approved this pull request. LGTM if CI is happy. https://github.com/llvm/llvm-project/pull/97495 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libunwind] eeb9316 - [runtimes][NFC] Improve error message when running Lit incorrectly
Author: Louis Dionne Date: 2024-06-26T15:44:28-05:00 New Revision: eeb931641ae735faa25283ddb2465318302e864f URL: https://github.com/llvm/llvm-project/commit/eeb931641ae735faa25283ddb2465318302e864f DIFF: https://github.com/llvm/llvm-project/commit/eeb931641ae735faa25283ddb2465318302e864f.diff LOG: [runtimes][NFC] Improve error message when running Lit incorrectly Added: Modified: libcxx/test/lit.cfg.py libcxxabi/test/lit.cfg.py libunwind/test/lit.cfg.py Removed: diff --git a/libcxx/test/lit.cfg.py b/libcxx/test/lit.cfg.py index ea4a9a75b4fdb..bb05526877479 100644 --- a/libcxx/test/lit.cfg.py +++ b/libcxx/test/lit.cfg.py @@ -7,5 +7,6 @@ lit_config.fatal( "You seem to be running Lit directly -- you should be running Lit through " "/bin/llvm-lit, which will ensure that the right Lit configuration " -"file is used." +"file is used. See https://libcxx.llvm.org/TestingLibcxx.html#usage for " +"how to run the libc++ tests." ) diff --git a/libcxxabi/test/lit.cfg.py b/libcxxabi/test/lit.cfg.py index ea4a9a75b4fdb..fb36c8d4aaa32 100644 --- a/libcxxabi/test/lit.cfg.py +++ b/libcxxabi/test/lit.cfg.py @@ -7,5 +7,6 @@ lit_config.fatal( "You seem to be running Lit directly -- you should be running Lit through " "/bin/llvm-lit, which will ensure that the right Lit configuration " -"file is used." +"file is used. See https://libcxx.llvm.org/TestingLibcxx.html#usage for " +"how to run the libc++abi tests." ) diff --git a/libunwind/test/lit.cfg.py b/libunwind/test/lit.cfg.py index ea4a9a75b4fdb..51e85e489db01 100644 --- a/libunwind/test/lit.cfg.py +++ b/libunwind/test/lit.cfg.py @@ -7,5 +7,6 @@ lit_config.fatal( "You seem to be running Lit directly -- you should be running Lit through " "/bin/llvm-lit, which will ensure that the right Lit configuration " -"file is used." +"file is used. See https://libcxx.llvm.org/TestingLibcxx.html#usage for " +"how to run the libunwind tests." ) ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [libunwind] [llvm] [openmp] [cmake] switch to CMake's native `check_{compiler,linker}_flag` (PR #96171)
ldionne wrote: I'm sorry to be the bearer of bad news, but it looks like Android is failing with this patch: https://buildkite.com/llvm-project/libcxx-ci/builds/35981#01905269-56a0-4314-a350-0b99ece37e89 This is kinda weird, it fails due to the ABI list changing. I checked other recent executions on Android and it doesn't look spurious. @rprichard is responsible for the Android CI bot and may be able to help. https://github.com/llvm/llvm-project/pull/96171 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [libunwind] [llvm] [openmp] [cmake] switch to CMake's native `check_{compiler,linker}_flag` (PR #96171)
ldionne wrote: @h-vetinari This one still looks like a real issue: https://buildkite.com/llvm-project/github-pull-requests/builds/74912#01903ca1-8089-4388-afdb-b65d400e6315 The rest looks good indeed. https://github.com/llvm/llvm-project/pull/96171 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [libc++] Fix deployment target Lit features (PR #94791)
https://github.com/ldionne closed https://github.com/llvm/llvm-project/pull/94791 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [libunwind] [llvm] [openmp] [cmake] switch to CMake's native `check_{compiler,linker}_flag` (PR #96171)
ldionne wrote: Yeah I think this is a great cleanup, I think we just need to fix the CI issues. https://github.com/llvm/llvm-project/pull/96171 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libunwind] [llvm] [runtimes] remove workaround for old CMake when setting `--unwindlib=none` (PR #93429)
ldionne wrote: I looked into it and I don't quite understand. We should definitely be building with `-fno-exceptions` in that configuration (and I can see that in the logs), so I don't understand why we have things like: ``` | ld.lld: error: undefined symbol: __cxa_begin_catch | >>> referenced by cxa_handlers.cpp:63 (/home/tcwg-buildbot/worker/linaro-aarch64-libcxx-02/llvm-project/libcxx-ci/build/armv7m-picolibc-no-exceptions/../../libcxxabi/src/cxa_handlers.cpp:63) | >>> cxa_handlers.cpp.obj:(std::__terminate(void (*)())) in archive /home/tcwg-buildbot/worker/linaro-aarch64-libcxx-02/llvm-project/libcxx-ci/build/armv7m-picolibc-no-exceptions/lib/libc++abi.a ``` There should not be references to these functions since we're building without exceptions. Pinging the bot owner @mplatings https://github.com/llvm/llvm-project/pull/93429 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [libc++] Fix deployment target Lit features (PR #94791)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/94791 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [compiler-rt] [libcxx] [libunwind] [llvm] [openmp] [cmake] switch to CMake's native `check_{compiler,linker}_flag` (PR #96171)
ldionne wrote: The Bootstraping build seems to be failing with a real error: https://github.com/llvm/llvm-project/actions/runs/9596576098/job/26465655299?pr=96171 https://github.com/llvm/llvm-project/pull/96171 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libunwind] [llvm] [runtimes] remove workaround for old CMake when setting `--unwindlib=none` (PR #93429)
https://github.com/ldionne requested changes to this pull request. Actually, I think some of the libunwind failures on BuildKite are legitimate. See https://buildkite.com/llvm-project/libcxx-ci/builds/35920. https://github.com/llvm/llvm-project/pull/93429 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libunwind] [llvm] [runtimes] remove workaround for old CMake when setting `--unwindlib=none` (PR #93429)
https://github.com/ldionne approved this pull request. LGTM. The CI failures are flakes. https://github.com/llvm/llvm-project/pull/93429 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [libc++] Fix deployment target Lit features (PR #94791)
https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/94791 >From ba1b9edc06ce05f1112895dbbd965a64c5838c98 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Fri, 31 May 2024 10:55:53 -0700 Subject: [PATCH 1/2] [libc++] Fix deployment target Lit features We were not making any distinction between e.g. the "Apple-flavored" libc++ built from trunk and the system-provided standard library on Apple platforms. For example, any test that would be XFAILed on a back-deployment target would unexpectedly pass when run on that deployment target against the tip of trunk Apple-flavored libc++. In reality, that test would be expected to pass because we're running against the latest libc++, even if it is Apple-flavored. To solve this issue, we introduce a new feature that describes whether the Standard Library in use is the one provided by the system by default, and that notion is different from the underlying standard library flavor. --- .../configs/apple-libc++-backdeployment.cfg.in | 1 + .../cxa_deleted_virtual.pass.cpp | 2 +- .../string.capacity/PR53170.pass.cpp | 2 +- .../string.capacity/allocation_size.pass.cpp | 2 +- ...2_notify_from_pthread_created_thread.pass.cpp | 2 +- .../thread.thread.this/sleep_for.pass.cpp| 2 +- .../sleep_for.signals.pass.cpp | 2 +- .../stdlib_h.aligned_alloc.compile.pass.cpp | 2 +- .../generic_category.pass.cpp| 2 +- .../system_category.pass.cpp | 2 +- .../directory_entry.mods/refresh.pass.cpp| 2 +- .../directory_entry.obs/file_size.pass.cpp | 2 +- .../directory_entry.obs/hard_link_count.pass.cpp | 2 +- .../directory_entry.obs/last_write_time.pass.cpp | 2 +- .../fs.op.copy_file/copy_file.pass.cpp | 2 +- .../create_directories.pass.cpp | 2 +- .../create_directory.pass.cpp| 2 +- .../create_directory_with_attributes.pass.cpp| 2 +- .../fs.op.file_size/file_size.pass.cpp | 2 +- .../last_write_time.pass.cpp | 2 +- .../fs.op.funcs/fs.op.remove_all/toctou.pass.cpp | 6 +++--- .../istream.formatted.arithmetic/bool.pass.cpp | 2 +- .../istream.formatted.arithmetic/double.pass.cpp | 2 +- .../istream.formatted.arithmetic/float.pass.cpp | 2 +- .../istream.formatted.arithmetic/int.pass.cpp| 2 +- .../istream.formatted.arithmetic/long.pass.cpp | 2 +- .../long_double.pass.cpp | 2 +- .../long_long.pass.cpp | 2 +- .../pointer.pass.cpp | 2 +- .../istream.formatted.arithmetic/short.pass.cpp | 2 +- .../unsigned_int.pass.cpp| 2 +- .../unsigned_long.pass.cpp | 2 +- .../unsigned_long_long.pass.cpp | 2 +- .../unsigned_short.pass.cpp | 2 +- .../istream_extractors/streambuf.pass.cpp| 2 +- .../istream.unformatted/get.pass.cpp | 2 +- .../istream.unformatted/get_chart.pass.cpp | 2 +- .../get_pointer_size.pass.cpp| 2 +- .../get_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/get_streambuf.pass.cpp | 2 +- .../get_streambuf_chart.pass.cpp | 2 +- .../getline_pointer_size.pass.cpp| 2 +- .../getline_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/ignore.pass.cpp | 2 +- .../istream.unformatted/peek.pass.cpp| 2 +- .../istream.unformatted/read.pass.cpp| 2 +- .../istream.unformatted/seekg_off.pass.cpp | 2 +- .../minmax_showbase.pass.cpp | 2 +- .../ostream.inserters.arithmetic/minus1.pass.cpp | 2 +- .../ios_Init/ios_Init.multiple.pass.cpp | 2 +- ...ized_delete_array_fsizeddeallocation.pass.cpp | 2 +- .../sized_delete_fsizeddeallocation.pass.cpp | 2 +- .../uncaught/uncaught_exceptions.pass.cpp| 4 ++-- .../cstdlib.aligned_alloc.compile.pass.cpp | 2 +- .../ctime.timespec.compile.pass.cpp | 2 +- .../std/localization/codecvt_unicode.pass.cpp| 2 +- .../facet.ctype.char.statics/table_size.pass.cpp | 4 ++-- .../facet.num.get.members/get_long.pass.cpp | 2 +- .../locale.cons/name_construction.pass.cpp | 2 +- .../std/numerics/rand/rand.device/ctor.pass.cpp | 4 ++-- .../string.capacity/max_size.pass.cpp| 2 +- .../string.capacity/over_max_size.pass.cpp | 4 ++-- .../string.capacity/reserve_size.pass.cpp| 2 +- .../futures.async/async_race.38682.pass.cpp | 2 +- .../futures/futures.future_error/what.pass.cpp | 2 +- .../notify_all_at_thread_exit_lwg3343.pass.cpp | 4 ++-- .../memory/temporary.buffer/overaligned.pass.cpp | 2 +- libcxx/utils/ci/buildkite-pipeline.yml | 4 ++-- libcxx/utils/ci/run-buildbot | 2 +-
[libcxx] [libcxxabi] [libunwind] [libc++] Fix deployment target Lit features (PR #94791)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/94791 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [libc++] Fix deployment target Lit features (PR #94791)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/94791 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [libc++] Fix deployment target Lit features (PR #94791)
https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/94791 >From ba1b9edc06ce05f1112895dbbd965a64c5838c98 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Fri, 31 May 2024 10:55:53 -0700 Subject: [PATCH 1/2] [libc++] Fix deployment target Lit features We were not making any distinction between e.g. the "Apple-flavored" libc++ built from trunk and the system-provided standard library on Apple platforms. For example, any test that would be XFAILed on a back-deployment target would unexpectedly pass when run on that deployment target against the tip of trunk Apple-flavored libc++. In reality, that test would be expected to pass because we're running against the latest libc++, even if it is Apple-flavored. To solve this issue, we introduce a new feature that describes whether the Standard Library in use is the one provided by the system by default, and that notion is different from the underlying standard library flavor. --- .../configs/apple-libc++-backdeployment.cfg.in | 1 + .../cxa_deleted_virtual.pass.cpp | 2 +- .../string.capacity/PR53170.pass.cpp | 2 +- .../string.capacity/allocation_size.pass.cpp | 2 +- ...2_notify_from_pthread_created_thread.pass.cpp | 2 +- .../thread.thread.this/sleep_for.pass.cpp| 2 +- .../sleep_for.signals.pass.cpp | 2 +- .../stdlib_h.aligned_alloc.compile.pass.cpp | 2 +- .../generic_category.pass.cpp| 2 +- .../system_category.pass.cpp | 2 +- .../directory_entry.mods/refresh.pass.cpp| 2 +- .../directory_entry.obs/file_size.pass.cpp | 2 +- .../directory_entry.obs/hard_link_count.pass.cpp | 2 +- .../directory_entry.obs/last_write_time.pass.cpp | 2 +- .../fs.op.copy_file/copy_file.pass.cpp | 2 +- .../create_directories.pass.cpp | 2 +- .../create_directory.pass.cpp| 2 +- .../create_directory_with_attributes.pass.cpp| 2 +- .../fs.op.file_size/file_size.pass.cpp | 2 +- .../last_write_time.pass.cpp | 2 +- .../fs.op.funcs/fs.op.remove_all/toctou.pass.cpp | 6 +++--- .../istream.formatted.arithmetic/bool.pass.cpp | 2 +- .../istream.formatted.arithmetic/double.pass.cpp | 2 +- .../istream.formatted.arithmetic/float.pass.cpp | 2 +- .../istream.formatted.arithmetic/int.pass.cpp| 2 +- .../istream.formatted.arithmetic/long.pass.cpp | 2 +- .../long_double.pass.cpp | 2 +- .../long_long.pass.cpp | 2 +- .../pointer.pass.cpp | 2 +- .../istream.formatted.arithmetic/short.pass.cpp | 2 +- .../unsigned_int.pass.cpp| 2 +- .../unsigned_long.pass.cpp | 2 +- .../unsigned_long_long.pass.cpp | 2 +- .../unsigned_short.pass.cpp | 2 +- .../istream_extractors/streambuf.pass.cpp| 2 +- .../istream.unformatted/get.pass.cpp | 2 +- .../istream.unformatted/get_chart.pass.cpp | 2 +- .../get_pointer_size.pass.cpp| 2 +- .../get_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/get_streambuf.pass.cpp | 2 +- .../get_streambuf_chart.pass.cpp | 2 +- .../getline_pointer_size.pass.cpp| 2 +- .../getline_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/ignore.pass.cpp | 2 +- .../istream.unformatted/peek.pass.cpp| 2 +- .../istream.unformatted/read.pass.cpp| 2 +- .../istream.unformatted/seekg_off.pass.cpp | 2 +- .../minmax_showbase.pass.cpp | 2 +- .../ostream.inserters.arithmetic/minus1.pass.cpp | 2 +- .../ios_Init/ios_Init.multiple.pass.cpp | 2 +- ...ized_delete_array_fsizeddeallocation.pass.cpp | 2 +- .../sized_delete_fsizeddeallocation.pass.cpp | 2 +- .../uncaught/uncaught_exceptions.pass.cpp| 4 ++-- .../cstdlib.aligned_alloc.compile.pass.cpp | 2 +- .../ctime.timespec.compile.pass.cpp | 2 +- .../std/localization/codecvt_unicode.pass.cpp| 2 +- .../facet.ctype.char.statics/table_size.pass.cpp | 4 ++-- .../facet.num.get.members/get_long.pass.cpp | 2 +- .../locale.cons/name_construction.pass.cpp | 2 +- .../std/numerics/rand/rand.device/ctor.pass.cpp | 4 ++-- .../string.capacity/max_size.pass.cpp| 2 +- .../string.capacity/over_max_size.pass.cpp | 4 ++-- .../string.capacity/reserve_size.pass.cpp| 2 +- .../futures.async/async_race.38682.pass.cpp | 2 +- .../futures/futures.future_error/what.pass.cpp | 2 +- .../notify_all_at_thread_exit_lwg3343.pass.cpp | 4 ++-- .../memory/temporary.buffer/overaligned.pass.cpp | 2 +- libcxx/utils/ci/buildkite-pipeline.yml | 4 ++-- libcxx/utils/ci/run-buildbot | 2 +-
[libcxx] [libcxxabi] [libunwind] [libc++] Fix deployment target Lit features (PR #94791)
https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/94791 >From 783f2820037dbe25673a67bbbf15297738466184 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Fri, 31 May 2024 10:55:53 -0700 Subject: [PATCH] [libc++] Fix deployment target Lit features We were not making any distinction between e.g. the "Apple-flavored" libc++ built from trunk and the system-provided standard library on Apple platforms. For example, any test that would be XFAILed on a back-deployment target would unexpectedly pass when run on that deployment target against the tip of trunk Apple-flavored libc++. In reality, that test would be expected to pass because we're running against the latest libc++, even if it is Apple-flavored. To solve this issue, we introduce a new feature that describes whether the Standard Library in use is the one provided by the system by default, and that notion is different from the underlying standard library flavor. --- .../configs/apple-libc++-backdeployment.cfg.in | 1 + .../cxa_deleted_virtual.pass.cpp | 2 +- .../string.capacity/PR53170.pass.cpp | 2 +- .../string.capacity/allocation_size.pass.cpp | 2 +- ...2_notify_from_pthread_created_thread.pass.cpp | 2 +- .../thread.thread.this/sleep_for.pass.cpp| 2 +- .../sleep_for.signals.pass.cpp | 2 +- .../stdlib_h.aligned_alloc.compile.pass.cpp | 2 +- .../generic_category.pass.cpp| 2 +- .../system_category.pass.cpp | 2 +- .../directory_entry.mods/refresh.pass.cpp| 2 +- .../directory_entry.obs/file_size.pass.cpp | 2 +- .../directory_entry.obs/hard_link_count.pass.cpp | 2 +- .../directory_entry.obs/last_write_time.pass.cpp | 2 +- .../fs.op.copy_file/copy_file.pass.cpp | 2 +- .../create_directories.pass.cpp | 2 +- .../create_directory.pass.cpp| 2 +- .../create_directory_with_attributes.pass.cpp| 2 +- .../fs.op.file_size/file_size.pass.cpp | 2 +- .../last_write_time.pass.cpp | 2 +- .../fs.op.funcs/fs.op.remove_all/toctou.pass.cpp | 6 +++--- .../istream.formatted.arithmetic/bool.pass.cpp | 2 +- .../istream.formatted.arithmetic/double.pass.cpp | 2 +- .../istream.formatted.arithmetic/float.pass.cpp | 2 +- .../istream.formatted.arithmetic/int.pass.cpp| 2 +- .../istream.formatted.arithmetic/long.pass.cpp | 2 +- .../long_double.pass.cpp | 2 +- .../long_long.pass.cpp | 2 +- .../pointer.pass.cpp | 2 +- .../istream.formatted.arithmetic/short.pass.cpp | 2 +- .../unsigned_int.pass.cpp| 2 +- .../unsigned_long.pass.cpp | 2 +- .../unsigned_long_long.pass.cpp | 2 +- .../unsigned_short.pass.cpp | 2 +- .../istream_extractors/streambuf.pass.cpp| 2 +- .../istream.unformatted/get.pass.cpp | 2 +- .../istream.unformatted/get_chart.pass.cpp | 2 +- .../get_pointer_size.pass.cpp| 2 +- .../get_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/get_streambuf.pass.cpp | 2 +- .../get_streambuf_chart.pass.cpp | 2 +- .../getline_pointer_size.pass.cpp| 2 +- .../getline_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/ignore.pass.cpp | 2 +- .../istream.unformatted/peek.pass.cpp| 2 +- .../istream.unformatted/read.pass.cpp| 2 +- .../istream.unformatted/seekg_off.pass.cpp | 2 +- .../minmax_showbase.pass.cpp | 2 +- .../ostream.inserters.arithmetic/minus1.pass.cpp | 2 +- .../ios_Init/ios_Init.multiple.pass.cpp | 2 +- ...ized_delete_array_fsizeddeallocation.pass.cpp | 2 +- .../sized_delete_fsizeddeallocation.pass.cpp | 2 +- .../uncaught/uncaught_exceptions.pass.cpp| 4 ++-- .../cstdlib.aligned_alloc.compile.pass.cpp | 2 +- .../ctime.timespec.compile.pass.cpp | 2 +- .../std/localization/codecvt_unicode.pass.cpp| 2 +- .../facet.ctype.char.statics/table_size.pass.cpp | 4 ++-- .../facet.num.get.members/get_long.pass.cpp | 2 +- .../locale.cons/name_construction.pass.cpp | 2 +- .../std/numerics/rand/rand.device/ctor.pass.cpp | 4 ++-- .../string.capacity/max_size.pass.cpp| 2 +- .../string.capacity/over_max_size.pass.cpp | 4 ++-- .../string.capacity/reserve_size.pass.cpp| 2 +- .../futures.async/async_race.38682.pass.cpp | 2 +- .../futures/futures.future_error/what.pass.cpp | 2 +- .../notify_all_at_thread_exit_lwg3343.pass.cpp | 4 ++-- .../memory/temporary.buffer/overaligned.pass.cpp | 2 +- libcxx/utils/ci/buildkite-pipeline.yml | 4 ++-- libcxx/utils/ci/run-buildbot | 2 +-
[clang] [libcxx] [clang] Add builtin to clear padding bytes (prework for P0528R3) (PR #75371)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/75371 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libcxx] [libc++] Add builtin to clear padding bytes (prework for P0528R3) (PR #75371)
@@ -0,0 +1,807 @@ +//===--===// +// +// 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 +// +//===--===// +// UNSUPPORTED: c++03 ldionne wrote: @efriedma-quic There's a question of where this test should live. IIUC LLVM usually tests stuff by looking at the code that gets generated and using `FileCheck`. However, this test is different in that it actually runs on the target and ensures that we have the right behavior. This is quite nice and it's definitely how we would want to test that from the library side. However, there is no user-facing facility exposed by C++ for this builtin, so I'm thinking it doesn't really belong under `libcxx/test/`. Is there precedent for these kinds of runtime tests in LLVM codegen? Otherwise, one thing we could potentially do is define an internal libc++ helper like `__libcpp_clear_padding` and keep these tests under `libcxx/test/libcxx`. We'd still want to make sure that the tests for the builtin under `clang/test` are sufficient, though. https://github.com/llvm/llvm-project/pull/75371 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Clean up macOS version flags (PR #95374)
https://github.com/ldionne approved this pull request. LGTM https://github.com/llvm/llvm-project/pull/95374 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang-tools-extra] [libcxx] [lldb] [llvm] Add clang basic module directory (PR #93388)
ldionne wrote: For tidying up the libc++ review queue, please remove the `libc++` tag once you rebase this (the small changes in `libcxx` will go away). https://github.com/llvm/llvm-project/pull/93388 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libcxxabi] [llvm] Add support for WASI builds (PR #91051)
https://github.com/ldionne approved this pull request. FWIW I am happy with the one line change in `libcxxabi/`. For libc++ to officially support this beyond just a fun proof of concept, we'd need a story for running the tests and set up a pre-commit CI for it though. I'm approving just to get the `reviewers-libcxxabi` group out of your way, I didn't look at the rest of the PR. Also, if you think we should go ahead with the other PR instead and don't plan on merging this, please close this PR to help us keep our PR queue tidy. Thanks! https://github.com/llvm/llvm-project/pull/91051 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [libcxx] [Clang] Implement CWG2137 (list-initialization from objects of the same type) (PR #94355)
https://github.com/ldionne approved this pull request. Thanks for fixing the libc++ tests. That part of the patch LGTM. https://github.com/llvm/llvm-project/pull/94355 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang] Add value_type attr, use it to add noalias when pass-by-value. (PR #95004)
ldionne wrote: CC @philnik777 https://github.com/llvm/llvm-project/pull/95004 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libunwind] [libunwind] Tweak tests for musl support. (PR #85097)
https://github.com/ldionne closed https://github.com/llvm/llvm-project/pull/85097 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [libc++] Fix deployment target Lit features (PR #94791)
https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/94791 >From 61a434bae9f3787122e123540b7c379f410e037b Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Fri, 31 May 2024 10:55:53 -0700 Subject: [PATCH 1/2] [libc++] Fix deployment target Lit features We were not making any distinction between e.g. the "Apple-flavored" libc++ built from trunk and the system-provided standard library on Apple platforms. For example, any test that would be XFAILed on a back-deployment target would unexpectedly pass when run on that deployment target against the tip of trunk Apple-flavored libc++. In reality, that test would be expected to pass because we're running against the latest libc++, even if it is Apple-flavored. To solve this issue, we introduce a new feature that describes whether the Standard Library in use is the one provided by the system by default, and that notion is different from the underlying standard library flavor. --- .../configs/apple-libc++-backdeployment.cfg.in | 1 + .../cxa_deleted_virtual.pass.cpp | 2 +- .../string.capacity/PR53170.pass.cpp | 2 +- .../string.capacity/allocation_size.pass.cpp | 2 +- ...2_notify_from_pthread_created_thread.pass.cpp | 2 +- .../thread.thread.this/sleep_for.pass.cpp| 2 +- .../sleep_for.signals.pass.cpp | 2 +- .../stdlib_h.aligned_alloc.compile.pass.cpp | 2 +- .../generic_category.pass.cpp| 2 +- .../system_category.pass.cpp | 2 +- .../directory_entry.mods/refresh.pass.cpp| 2 +- .../directory_entry.obs/file_size.pass.cpp | 2 +- .../directory_entry.obs/hard_link_count.pass.cpp | 2 +- .../directory_entry.obs/last_write_time.pass.cpp | 2 +- .../fs.op.copy_file/copy_file.pass.cpp | 2 +- .../create_directories.pass.cpp | 2 +- .../create_directory.pass.cpp| 2 +- .../create_directory_with_attributes.pass.cpp| 2 +- .../fs.op.file_size/file_size.pass.cpp | 2 +- .../last_write_time.pass.cpp | 2 +- .../fs.op.funcs/fs.op.remove_all/toctou.pass.cpp | 6 +++--- .../istream.formatted.arithmetic/bool.pass.cpp | 2 +- .../istream.formatted.arithmetic/double.pass.cpp | 2 +- .../istream.formatted.arithmetic/float.pass.cpp | 2 +- .../istream.formatted.arithmetic/int.pass.cpp| 2 +- .../istream.formatted.arithmetic/long.pass.cpp | 2 +- .../long_double.pass.cpp | 2 +- .../long_long.pass.cpp | 2 +- .../pointer.pass.cpp | 2 +- .../istream.formatted.arithmetic/short.pass.cpp | 2 +- .../unsigned_int.pass.cpp| 2 +- .../unsigned_long.pass.cpp | 2 +- .../unsigned_long_long.pass.cpp | 2 +- .../unsigned_short.pass.cpp | 2 +- .../istream_extractors/streambuf.pass.cpp| 2 +- .../istream.unformatted/get.pass.cpp | 2 +- .../istream.unformatted/get_chart.pass.cpp | 2 +- .../get_pointer_size.pass.cpp| 2 +- .../get_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/get_streambuf.pass.cpp | 2 +- .../get_streambuf_chart.pass.cpp | 2 +- .../getline_pointer_size.pass.cpp| 2 +- .../getline_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/ignore.pass.cpp | 2 +- .../istream.unformatted/peek.pass.cpp| 2 +- .../istream.unformatted/read.pass.cpp| 2 +- .../istream.unformatted/seekg_off.pass.cpp | 2 +- .../minmax_showbase.pass.cpp | 2 +- .../ostream.inserters.arithmetic/minus1.pass.cpp | 2 +- .../ios_Init/ios_Init.multiple.pass.cpp | 2 +- ...ized_delete_array_fsizeddeallocation.pass.cpp | 2 +- .../sized_delete_fsizeddeallocation.pass.cpp | 2 +- .../uncaught/uncaught_exceptions.pass.cpp| 4 ++-- .../cstdlib.aligned_alloc.compile.pass.cpp | 2 +- .../ctime.timespec.compile.pass.cpp | 2 +- .../std/localization/codecvt_unicode.pass.cpp| 2 +- .../facet.ctype.char.statics/table_size.pass.cpp | 4 ++-- .../facet.num.get.members/get_long.pass.cpp | 2 +- .../locale.cons/name_construction.pass.cpp | 2 +- .../std/numerics/rand/rand.device/ctor.pass.cpp | 4 ++-- .../string.capacity/max_size.pass.cpp| 2 +- .../string.capacity/over_max_size.pass.cpp | 4 ++-- .../string.capacity/reserve_size.pass.cpp| 2 +- .../futures.async/async_race.38682.pass.cpp | 2 +- .../futures/futures.future_error/what.pass.cpp | 2 +- .../notify_all_at_thread_exit_lwg3343.pass.cpp | 4 ++-- .../memory/temporary.buffer/overaligned.pass.cpp | 2 +- libcxx/utils/ci/buildkite-pipeline.yml | 4 ++-- libcxx/utils/ci/run-buildbot | 2 +-
[libcxx] [libcxxabi] [libunwind] [libc++] Fix deployment target Lit features (PR #94791)
https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/94791 We were not making any distinction between e.g. the "Apple-flavored" libc++ built from trunk and the system-provided standard library on Apple platforms. For example, any test that would be XFAILed on a back-deployment target would unexpectedly pass when run on that deployment target against the tip of trunk Apple-flavored libc++. In reality, that test would be expected to pass because we're running against the latest libc++, even if it is Apple-flavored. To solve this issue, we introduce a new feature that describes whether the Standard Library in use is the one provided by the system by default, and that notion is different from the underlying standard library flavor. >From 61a434bae9f3787122e123540b7c379f410e037b Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Fri, 31 May 2024 10:55:53 -0700 Subject: [PATCH] [libc++] Fix deployment target Lit features We were not making any distinction between e.g. the "Apple-flavored" libc++ built from trunk and the system-provided standard library on Apple platforms. For example, any test that would be XFAILed on a back-deployment target would unexpectedly pass when run on that deployment target against the tip of trunk Apple-flavored libc++. In reality, that test would be expected to pass because we're running against the latest libc++, even if it is Apple-flavored. To solve this issue, we introduce a new feature that describes whether the Standard Library in use is the one provided by the system by default, and that notion is different from the underlying standard library flavor. --- .../configs/apple-libc++-backdeployment.cfg.in | 1 + .../cxa_deleted_virtual.pass.cpp | 2 +- .../string.capacity/PR53170.pass.cpp | 2 +- .../string.capacity/allocation_size.pass.cpp | 2 +- ...2_notify_from_pthread_created_thread.pass.cpp | 2 +- .../thread.thread.this/sleep_for.pass.cpp| 2 +- .../sleep_for.signals.pass.cpp | 2 +- .../stdlib_h.aligned_alloc.compile.pass.cpp | 2 +- .../generic_category.pass.cpp| 2 +- .../system_category.pass.cpp | 2 +- .../directory_entry.mods/refresh.pass.cpp| 2 +- .../directory_entry.obs/file_size.pass.cpp | 2 +- .../directory_entry.obs/hard_link_count.pass.cpp | 2 +- .../directory_entry.obs/last_write_time.pass.cpp | 2 +- .../fs.op.copy_file/copy_file.pass.cpp | 2 +- .../create_directories.pass.cpp | 2 +- .../create_directory.pass.cpp| 2 +- .../create_directory_with_attributes.pass.cpp| 2 +- .../fs.op.file_size/file_size.pass.cpp | 2 +- .../last_write_time.pass.cpp | 2 +- .../fs.op.funcs/fs.op.remove_all/toctou.pass.cpp | 6 +++--- .../istream.formatted.arithmetic/bool.pass.cpp | 2 +- .../istream.formatted.arithmetic/double.pass.cpp | 2 +- .../istream.formatted.arithmetic/float.pass.cpp | 2 +- .../istream.formatted.arithmetic/int.pass.cpp| 2 +- .../istream.formatted.arithmetic/long.pass.cpp | 2 +- .../long_double.pass.cpp | 2 +- .../long_long.pass.cpp | 2 +- .../pointer.pass.cpp | 2 +- .../istream.formatted.arithmetic/short.pass.cpp | 2 +- .../unsigned_int.pass.cpp| 2 +- .../unsigned_long.pass.cpp | 2 +- .../unsigned_long_long.pass.cpp | 2 +- .../unsigned_short.pass.cpp | 2 +- .../istream_extractors/streambuf.pass.cpp| 2 +- .../istream.unformatted/get.pass.cpp | 2 +- .../istream.unformatted/get_chart.pass.cpp | 2 +- .../get_pointer_size.pass.cpp| 2 +- .../get_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/get_streambuf.pass.cpp | 2 +- .../get_streambuf_chart.pass.cpp | 2 +- .../getline_pointer_size.pass.cpp| 2 +- .../getline_pointer_size_chart.pass.cpp | 2 +- .../istream.unformatted/ignore.pass.cpp | 2 +- .../istream.unformatted/peek.pass.cpp| 2 +- .../istream.unformatted/read.pass.cpp| 2 +- .../istream.unformatted/seekg_off.pass.cpp | 2 +- .../minmax_showbase.pass.cpp | 2 +- .../ostream.inserters.arithmetic/minus1.pass.cpp | 2 +- .../ios_Init/ios_Init.multiple.pass.cpp | 2 +- ...ized_delete_array_fsizeddeallocation.pass.cpp | 2 +- .../sized_delete_fsizeddeallocation.pass.cpp | 2 +- .../uncaught/uncaught_exceptions.pass.cpp| 4 ++-- .../cstdlib.aligned_alloc.compile.pass.cpp | 2 +- .../ctime.timespec.compile.pass.cpp | 2 +- .../std/localization/codecvt_unicode.pass.cpp| 2 +- .../facet.ctype.char.statics/table_size.pass.cpp | 4 ++--
[clang] [libcxx] [Clang] Implement resolution for CWG1835 (PR #92957)
https://github.com/ldionne approved this pull request. This patch isn't blocked by libc++, thanks for fixing the incorrect usage. This isn't a review of the patch itself, just unblocking for libcxx-reviewers. https://github.com/llvm/llvm-project/pull/92957 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [llvm] [runtimes] Correctly apply libdir subdir for multilib (PR #93354)
https://github.com/ldionne approved this pull request. https://github.com/llvm/llvm-project/pull/93354 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [llvm] [runtimes] Correctly apply libdir subdir for multilib (PR #93354)
https://github.com/ldionne edited https://github.com/llvm/llvm-project/pull/93354 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [runtimes] Remove explicit -isysroot from the testing configurations on macOS (PR #66265)
ldionne wrote: Not pursuing anymore, closing to clean up the queue. https://github.com/llvm/llvm-project/pull/66265 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [runtimes] Remove explicit -isysroot from the testing configurations on macOS (PR #66265)
https://github.com/ldionne closed https://github.com/llvm/llvm-project/pull/66265 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [runtimes][CMake] Simplify the propagation of test dependencies (PR #93558)
https://github.com/ldionne closed https://github.com/llvm/llvm-project/pull/93558 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [runtimes][CMake] Simplify the propagation of test dependencies (PR #93558)
ldionne wrote: CI failure is an android fluke, merging! https://github.com/llvm/llvm-project/pull/93558 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [runtimes] Reintroduce a way to select the compiler used for the test suite (PR #93542)
https://github.com/ldionne closed https://github.com/llvm/llvm-project/pull/93542 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang-tools-extra] [compiler-rt] [libcxx] [lld] [lldb] [llvm] [mlir] Fix SyntaxWarning messages from python 3.12 (PR #86806)
ldionne wrote: Can we either finish this up or close it, please? I'd like to tidy up the libc++ review queue. https://github.com/llvm/llvm-project/pull/86806 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [clang-tools-extra] [libcxx] [clang][Modules] Remove unnecessary includes of `Module.h` (PR #93417)
https://github.com/ldionne approved this pull request. libcxx/ changes LGTM. https://github.com/llvm/llvm-project/pull/93417 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxx] [libcxxabi] [libunwind] [runtimes] Reintroduce a way to select the compiler used for the test suite (PR #93542)
https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/93542 >From 95ca5b389506f0a2e32abd0af632af5a87d3c356 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Tue, 28 May 2024 07:43:34 -0400 Subject: [PATCH 1/2] [runtimes] Reintroduce a way to select the compiler used for the test suite A while back, the cxx_under_test Lit parameter was removed. This patch reintroduces a Lit parameter called "compiler" which controls the value of the %{cxx} substitution used in the test suite. To run the test suite with a different compiler, one can now pass --param compiler=. --- libcxx/test/CMakeLists.txt | 2 ++ libcxx/test/configs/cmake-bridge.cfg.in| 2 -- libcxx/utils/libcxx/test/params.py | 8 libcxxabi/test/CMakeLists.txt | 2 ++ libcxxabi/test/configs/cmake-bridge.cfg.in | 1 - libunwind/test/CMakeLists.txt | 2 ++ libunwind/test/configs/cmake-bridge.cfg.in | 2 -- 7 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libcxx/test/CMakeLists.txt b/libcxx/test/CMakeLists.txt index fd57aa9fe8b37..ee3502d32f7ae 100644 --- a/libcxx/test/CMakeLists.txt +++ b/libcxx/test/CMakeLists.txt @@ -16,6 +16,8 @@ endif() set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!") set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n") +serialize_lit_string_param(SERIALIZED_LIT_PARAMS compiler "${CMAKE_CXX_COMPILER}") + if (NOT LIBCXX_ENABLE_EXCEPTIONS) serialize_lit_param(SERIALIZED_LIT_PARAMS enable_exceptions False) endif() diff --git a/libcxx/test/configs/cmake-bridge.cfg.in b/libcxx/test/configs/cmake-bridge.cfg.in index 84b3270a8940a..78d0cb5a25748 100644 --- a/libcxx/test/configs/cmake-bridge.cfg.in +++ b/libcxx/test/configs/cmake-bridge.cfg.in @@ -23,8 +23,6 @@ config.recursiveExpansionLimit = 10 config.test_exec_root = os.path.join('@CMAKE_BINARY_DIR@', 'test') # Add substitutions for bootstrapping the test suite configuration -import shlex -config.substitutions.append(('%{cxx}', shlex.quote('@CMAKE_CXX_COMPILER@'))) config.substitutions.append(('%{libcxx-dir}', '@LIBCXX_SOURCE_DIR@')) config.substitutions.append(('%{include-dir}', '@LIBCXX_GENERATED_INCLUDE_DIR@')) config.substitutions.append(('%{target-include-dir}', '@LIBCXX_GENERATED_INCLUDE_TARGET_DIR@')) diff --git a/libcxx/utils/libcxx/test/params.py b/libcxx/utils/libcxx/test/params.py index c2d294e49f488..0370a2da0ac75 100644 --- a/libcxx/utils/libcxx/test/params.py +++ b/libcxx/utils/libcxx/test/params.py @@ -143,6 +143,14 @@ def getSuitableClangTidy(cfg): # fmt: off DEFAULT_PARAMETERS = [ +Parameter( +name="compiler", +type=str, +help="The path of the compiler to use for testing.", +actions=lambda cxx: [ +AddSubstitution("%{cxx}", cxx), +], +), Parameter( name="target_triple", type=str, diff --git a/libcxxabi/test/CMakeLists.txt b/libcxxabi/test/CMakeLists.txt index 586927189cf1d..cd908a3514cb2 100644 --- a/libcxxabi/test/CMakeLists.txt +++ b/libcxxabi/test/CMakeLists.txt @@ -24,6 +24,8 @@ endif() set(AUTO_GEN_COMMENT "## Autogenerated by libcxxabi configuration.\n# Do not edit!") set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n") +serialize_lit_string_param(SERIALIZED_LIT_PARAMS compiler "${CMAKE_CXX_COMPILER}") + if (NOT LIBCXXABI_ENABLE_EXCEPTIONS) serialize_lit_param(SERIALIZED_LIT_PARAMS enable_exceptions False) endif() diff --git a/libcxxabi/test/configs/cmake-bridge.cfg.in b/libcxxabi/test/configs/cmake-bridge.cfg.in index 1d0f51d37437b..3fefc6a7fdc88 100644 --- a/libcxxabi/test/configs/cmake-bridge.cfg.in +++ b/libcxxabi/test/configs/cmake-bridge.cfg.in @@ -26,7 +26,6 @@ config.test_exec_root = os.path.join('@CMAKE_BINARY_DIR@', 'test') # TODO: This is a non-standard Lit attribute and we should have another way of accessing this. config.host_triple = '@LLVM_HOST_TRIPLE@' -config.substitutions.append(('%{cxx}', '@CMAKE_CXX_COMPILER@')) config.substitutions.append(('%{libcxx}', '@LIBCXXABI_LIBCXX_PATH@')) config.substitutions.append(('%{include}', '@LIBCXXABI_SOURCE_DIR@/include')) config.substitutions.append(('%{cxx-include}', '@LIBCXXABI_HEADER_DIR@/include/c++/v1')) diff --git a/libunwind/test/CMakeLists.txt b/libunwind/test/CMakeLists.txt index 21dfbb0a84f0a..bd2e575f2a296 100644 --- a/libunwind/test/CMakeLists.txt +++ b/libunwind/test/CMakeLists.txt @@ -15,6 +15,8 @@ pythonize_bool(LIBUNWIND_USES_ARM_EHABI) set(AUTO_GEN_COMMENT "## Autogenerated by libunwind configuration.\n# Do not edit!") set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n") +serialize_lit_string_param(SERIALIZED_LIT_PARAMS compiler "${CMAKE_CXX_COMPILER}") + if (LIBUNWIND_EXECUTOR) message(DEPRECATION "LIBUNWIND_EXECUTOR is deprecated, please add executor=... to LIBUNWIND_TEST_PARAMS")
[libcxx] [libcxxabi] [libunwind] [runtimes][CMake] Simplify the propagation of test dependencies (PR #93558)
https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/93558 Instead of using FOO_TEST_DEPS global variables that don't get updated properly from subdirectories, use targets to propagate the dependencies across directories. >From 1681e650b2fa0f0efab760eec341d2372873218b Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Tue, 28 May 2024 10:38:10 -0400 Subject: [PATCH] [runtimes][CMake] Simplify the propagation of test dependencies Instead of using FOO_TEST_DEPS global variables that don't get updated properly from subdirectories, use targets to propagate the dependencies across directories. --- libcxx/CMakeLists.txt | 7 +++ libcxx/benchmarks/CMakeLists.txt | 6 +- libcxx/modules/CMakeLists.txt | 1 + libcxx/src/CMakeLists.txt | 2 ++ libcxx/test/CMakeLists.txt | 14 -- libcxx/test/tools/clang_tidy_checks/CMakeLists.txt | 2 ++ libcxxabi/CMakeLists.txt | 3 +++ libcxxabi/src/CMakeLists.txt | 1 + libcxxabi/test/CMakeLists.txt | 13 + libunwind/test/CMakeLists.txt | 2 +- 10 files changed, 15 insertions(+), 36 deletions(-) diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt index cb5e0e5e6cdb5..560fe5599a53d 100644 --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -856,15 +856,14 @@ endfunction() #=== # Setup Source Code And Tests #=== +add_custom_target(cxx-test-depends + COMMENT "Build dependencies required to run the libc++ test suite.") + add_subdirectory(include) add_subdirectory(src) add_subdirectory(utils) add_subdirectory(modules) -set(LIBCXX_TEST_DEPS "cxx_experimental") - -list(APPEND LIBCXX_TEST_DEPS generate-cxx-modules) - if (LIBCXX_INCLUDE_BENCHMARKS) add_subdirectory(benchmarks) endif() diff --git a/libcxx/benchmarks/CMakeLists.txt b/libcxx/benchmarks/CMakeLists.txt index 93b549a316e38..2101f9c71788c 100644 --- a/libcxx/benchmarks/CMakeLists.txt +++ b/libcxx/benchmarks/CMakeLists.txt @@ -252,10 +252,6 @@ endforeach() if (LIBCXX_INCLUDE_TESTS) include(AddLLVM) - if (NOT DEFINED LIBCXX_TEST_DEPS) -message(FATAL_ERROR "Expected LIBCXX_TEST_DEPS to be defined") - endif() - configure_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py) @@ -265,6 +261,6 @@ if (LIBCXX_INCLUDE_TESTS) add_lit_target(check-cxx-benchmarks "Running libcxx benchmarks tests" ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS cxx-benchmarks ${LIBCXX_TEST_DEPS} + DEPENDS cxx-benchmarks cxx-test-depends ARGS ${BENCHMARK_LIT_ARGS}) endif() diff --git a/libcxx/modules/CMakeLists.txt b/libcxx/modules/CMakeLists.txt index d47d19a475531..82cd7b66beb7a 100644 --- a/libcxx/modules/CMakeLists.txt +++ b/libcxx/modules/CMakeLists.txt @@ -202,6 +202,7 @@ add_custom_target(generate-cxx-modules ALL DEPENDS ${_all_modules} ) +add_dependencies(cxx-test-depends generate-cxx-modules) # Configure the modules manifest. # Use the relative path between the installation and the module in the json diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt index 8b28d1b891895..65e6ce2c4da43 100644 --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -322,6 +322,7 @@ endif() # Add a meta-target for both libraries. add_custom_target(cxx DEPENDS ${LIBCXX_BUILD_TARGETS}) +add_dependencies(cxx-test-depends cxx) set(LIBCXX_EXPERIMENTAL_SOURCES experimental/keep.cpp @@ -366,6 +367,7 @@ set_target_properties(cxx_experimental ) cxx_add_common_build_flags(cxx_experimental) target_compile_options(cxx_experimental PUBLIC -D_LIBCPP_ENABLE_EXPERIMENTAL) +add_dependencies(cxx-test-depends cxx_experimental) if (LIBCXX_INSTALL_SHARED_LIBRARY) install(TARGETS cxx_shared diff --git a/libcxx/test/CMakeLists.txt b/libcxx/test/CMakeLists.txt index fd57aa9fe8b37..4737ac8067325 100644 --- a/libcxx/test/CMakeLists.txt +++ b/libcxx/test/CMakeLists.txt @@ -1,11 +1,5 @@ include(HandleLitArguments) add_subdirectory(tools) -# When the tools add clang-tidy support, the dependencies need to be updated. -# This cannot be done in the tools CMakeLists.txt since that does not update -# the status in this (a parent) directory. -if(TARGET cxx-tidy) - list(APPEND LIBCXX_TEST_DEPS cxx-tidy) -endif() # By default, libcxx and libcxxabi share a library directory. if (NOT LIBCXX_CXX_ABI_LIBRARY_PATH) @@ -38,10 +32,6 @@ endif() serialize_lit_params_list(SERIALIZED_LIT_PARAMS LIBCXX_TEST_PARAMS) -if (NOT DEFINED LIBCXX_TEST_DEPS) - message(FATAL_ERROR "Expected LIBCXX_TEST_DEPS to be defined") -endif() - if (MSVC) # Shared code for
[libcxx] [libcxxabi] [libunwind] [runtimes] Reintroduce a way to select the compiler used for the test suite (PR #93542)
https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/93542 A while back, the cxx_under_test Lit parameter was removed. This patch reintroduces a Lit parameter called "compiler" which controls the value of the %{cxx} substitution used in the test suite. To run the test suite with a different compiler, one can now pass --param compiler=. >From 95ca5b389506f0a2e32abd0af632af5a87d3c356 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Tue, 28 May 2024 07:43:34 -0400 Subject: [PATCH] [runtimes] Reintroduce a way to select the compiler used for the test suite A while back, the cxx_under_test Lit parameter was removed. This patch reintroduces a Lit parameter called "compiler" which controls the value of the %{cxx} substitution used in the test suite. To run the test suite with a different compiler, one can now pass --param compiler=. --- libcxx/test/CMakeLists.txt | 2 ++ libcxx/test/configs/cmake-bridge.cfg.in| 2 -- libcxx/utils/libcxx/test/params.py | 8 libcxxabi/test/CMakeLists.txt | 2 ++ libcxxabi/test/configs/cmake-bridge.cfg.in | 1 - libunwind/test/CMakeLists.txt | 2 ++ libunwind/test/configs/cmake-bridge.cfg.in | 2 -- 7 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libcxx/test/CMakeLists.txt b/libcxx/test/CMakeLists.txt index fd57aa9fe8b37..ee3502d32f7ae 100644 --- a/libcxx/test/CMakeLists.txt +++ b/libcxx/test/CMakeLists.txt @@ -16,6 +16,8 @@ endif() set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!") set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n") +serialize_lit_string_param(SERIALIZED_LIT_PARAMS compiler "${CMAKE_CXX_COMPILER}") + if (NOT LIBCXX_ENABLE_EXCEPTIONS) serialize_lit_param(SERIALIZED_LIT_PARAMS enable_exceptions False) endif() diff --git a/libcxx/test/configs/cmake-bridge.cfg.in b/libcxx/test/configs/cmake-bridge.cfg.in index 84b3270a8940a..78d0cb5a25748 100644 --- a/libcxx/test/configs/cmake-bridge.cfg.in +++ b/libcxx/test/configs/cmake-bridge.cfg.in @@ -23,8 +23,6 @@ config.recursiveExpansionLimit = 10 config.test_exec_root = os.path.join('@CMAKE_BINARY_DIR@', 'test') # Add substitutions for bootstrapping the test suite configuration -import shlex -config.substitutions.append(('%{cxx}', shlex.quote('@CMAKE_CXX_COMPILER@'))) config.substitutions.append(('%{libcxx-dir}', '@LIBCXX_SOURCE_DIR@')) config.substitutions.append(('%{include-dir}', '@LIBCXX_GENERATED_INCLUDE_DIR@')) config.substitutions.append(('%{target-include-dir}', '@LIBCXX_GENERATED_INCLUDE_TARGET_DIR@')) diff --git a/libcxx/utils/libcxx/test/params.py b/libcxx/utils/libcxx/test/params.py index c2d294e49f488..0370a2da0ac75 100644 --- a/libcxx/utils/libcxx/test/params.py +++ b/libcxx/utils/libcxx/test/params.py @@ -143,6 +143,14 @@ def getSuitableClangTidy(cfg): # fmt: off DEFAULT_PARAMETERS = [ +Parameter( +name="compiler", +type=str, +help="The path of the compiler to use for testing.", +actions=lambda cxx: [ +AddSubstitution("%{cxx}", cxx), +], +), Parameter( name="target_triple", type=str, diff --git a/libcxxabi/test/CMakeLists.txt b/libcxxabi/test/CMakeLists.txt index 586927189cf1d..cd908a3514cb2 100644 --- a/libcxxabi/test/CMakeLists.txt +++ b/libcxxabi/test/CMakeLists.txt @@ -24,6 +24,8 @@ endif() set(AUTO_GEN_COMMENT "## Autogenerated by libcxxabi configuration.\n# Do not edit!") set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n") +serialize_lit_string_param(SERIALIZED_LIT_PARAMS compiler "${CMAKE_CXX_COMPILER}") + if (NOT LIBCXXABI_ENABLE_EXCEPTIONS) serialize_lit_param(SERIALIZED_LIT_PARAMS enable_exceptions False) endif() diff --git a/libcxxabi/test/configs/cmake-bridge.cfg.in b/libcxxabi/test/configs/cmake-bridge.cfg.in index 1d0f51d37437b..3fefc6a7fdc88 100644 --- a/libcxxabi/test/configs/cmake-bridge.cfg.in +++ b/libcxxabi/test/configs/cmake-bridge.cfg.in @@ -26,7 +26,6 @@ config.test_exec_root = os.path.join('@CMAKE_BINARY_DIR@', 'test') # TODO: This is a non-standard Lit attribute and we should have another way of accessing this. config.host_triple = '@LLVM_HOST_TRIPLE@' -config.substitutions.append(('%{cxx}', '@CMAKE_CXX_COMPILER@')) config.substitutions.append(('%{libcxx}', '@LIBCXXABI_LIBCXX_PATH@')) config.substitutions.append(('%{include}', '@LIBCXXABI_SOURCE_DIR@/include')) config.substitutions.append(('%{cxx-include}', '@LIBCXXABI_HEADER_DIR@/include/c++/v1')) diff --git a/libunwind/test/CMakeLists.txt b/libunwind/test/CMakeLists.txt index 21dfbb0a84f0a..bd2e575f2a296 100644 --- a/libunwind/test/CMakeLists.txt +++ b/libunwind/test/CMakeLists.txt @@ -15,6 +15,8 @@ pythonize_bool(LIBUNWIND_USES_ARM_EHABI) set(AUTO_GEN_COMMENT "## Autogenerated by libunwind configuration.\n# Do not edit!") set(SERIALIZED_LIT_PARAMS "# Lit parameters
[clang] [llvm] [clang][ci] Move libc++ testing into the main PR pipeline (PR #93318)
@@ -1,82 +0,0 @@ -#===--===## ldionne wrote: I did check and it can be removed. I wrote that script so hopefully I’m not mistaken! I will also go and clean up (remove the clang-ci pipeline on Buildkite, since it’s not used anymore). I will wait a week begore doing so to avoid breaking any ongoing PR that might trigger it. https://github.com/llvm/llvm-project/pull/93318 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][ci] Move libc++ testing into the main PR pipeline (PR #93318)
@@ -1,82 +0,0 @@ -#===--===## ldionne wrote: `clang/utils/ci/run-buildbot` can be removed too, I think. https://github.com/llvm/llvm-project/pull/93318 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][ci] Move libc++ testing into the main PR pipeline (PR #93318)
@@ -54,3 +54,68 @@ cmake -S "${MONOREPO_ROOT}"/llvm -B "${BUILD_DIR}" \ echo "--- ninja" # Targets are not escaped as they are passed as separate arguments. ninja -C "${BUILD_DIR}" -k 0 ${targets} + ldionne wrote: It seems that we disagree on the approach taken here. I won't block you from merging the patch even though I think it's not the right approach, but I had to explain my thoughts on it. > If you're willing to do the work in a reasonable time (remember we're > reducing CI pressure here), you can take over this PR or I can abandon it. I > personally had enough of bash scripting to iterate on this immediately. I can't commit to that, I'm already overcommitted for libc++ work. Like I said, while I think this is not a great approach, I won't block you from going forward with it. It does achieve better overall throughput for the CI pipeline, so it's not like this approach has no benefits at all. https://github.com/llvm/llvm-project/pull/93318 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits