[clang] [libcxx] Reapply "[Clang] Implement resolution for CWG1835 (#92957, #98547)" (PR #100425)

2024-07-24 Thread Louis Dionne via cfe-commits

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)

2024-07-24 Thread Louis Dionne via cfe-commits

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)

2024-07-24 Thread Louis Dionne via cfe-commits

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)

2024-07-24 Thread Louis Dionne via cfe-commits

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)

2024-07-23 Thread Louis Dionne via cfe-commits

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)

2024-07-23 Thread Louis Dionne via cfe-commits

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)

2024-07-23 Thread Louis Dionne via cfe-commits

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)

2024-07-23 Thread Louis Dionne via cfe-commits

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)

2024-07-19 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-19 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-18 Thread Louis Dionne via cfe-commits

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)

2024-07-18 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-18 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-18 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-18 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-18 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-18 Thread Louis Dionne via cfe-commits

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)

2024-07-18 Thread Louis Dionne via cfe-commits

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)

2024-07-17 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-17 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-17 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-17 Thread Louis Dionne via cfe-commits

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)

2024-07-17 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-17 Thread Louis Dionne via cfe-commits

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)

2024-07-16 Thread Louis Dionne via cfe-commits

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)

2024-07-16 Thread Louis Dionne via cfe-commits

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)

2024-07-16 Thread Louis Dionne via cfe-commits

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)

2024-07-15 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-15 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-15 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-15 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-15 Thread Louis Dionne via cfe-commits

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)

2024-07-15 Thread Louis Dionne via cfe-commits

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)

2024-07-12 Thread Louis Dionne via cfe-commits

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)

2024-07-11 Thread Louis Dionne via cfe-commits

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)

2024-07-11 Thread Louis Dionne via cfe-commits

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)

2024-07-11 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits

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)

2024-07-10 Thread Louis Dionne via cfe-commits

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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits

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)

2024-07-10 Thread Louis Dionne via cfe-commits

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)

2024-07-10 Thread Louis Dionne via cfe-commits

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)

2024-07-10 Thread Louis Dionne via cfe-commits

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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-10 Thread Louis Dionne via cfe-commits


@@ -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)

2024-07-03 Thread Louis Dionne via cfe-commits

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)

2024-07-03 Thread Louis Dionne via cfe-commits

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

2024-06-26 Thread Louis Dionne via cfe-commits

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)

2024-06-26 Thread Louis Dionne via cfe-commits

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)

2024-06-25 Thread Louis Dionne via cfe-commits

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)

2024-06-21 Thread Louis Dionne via cfe-commits

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)

2024-06-21 Thread Louis Dionne via cfe-commits

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)

2024-06-21 Thread Louis Dionne via cfe-commits

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)

2024-06-21 Thread Louis Dionne via cfe-commits

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)

2024-06-20 Thread Louis Dionne via cfe-commits

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)

2024-06-20 Thread Louis Dionne via cfe-commits

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)

2024-06-20 Thread Louis Dionne via cfe-commits

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)

2024-06-18 Thread Louis Dionne via cfe-commits

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)

2024-06-18 Thread Louis Dionne via cfe-commits

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)

2024-06-18 Thread Louis Dionne via cfe-commits

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)

2024-06-18 Thread Louis Dionne via cfe-commits

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)

2024-06-17 Thread Louis Dionne via cfe-commits

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)

2024-06-14 Thread Louis Dionne via cfe-commits

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)

2024-06-14 Thread Louis Dionne via cfe-commits


@@ -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)

2024-06-13 Thread Louis Dionne via cfe-commits

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)

2024-06-12 Thread Louis Dionne via cfe-commits

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)

2024-06-11 Thread Louis Dionne via cfe-commits

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)

2024-06-11 Thread Louis Dionne via cfe-commits

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)

2024-06-10 Thread Louis Dionne via cfe-commits

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)

2024-06-10 Thread Louis Dionne via cfe-commits

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)

2024-06-10 Thread Louis Dionne via cfe-commits

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)

2024-06-07 Thread Louis Dionne via cfe-commits

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)

2024-06-05 Thread Louis Dionne via cfe-commits

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)

2024-05-31 Thread Louis Dionne via cfe-commits

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)

2024-05-31 Thread Louis Dionne via cfe-commits

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)

2024-05-29 Thread Louis Dionne via cfe-commits

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)

2024-05-29 Thread Louis Dionne via cfe-commits

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)

2024-05-28 Thread Louis Dionne via cfe-commits

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)

2024-05-28 Thread Louis Dionne via cfe-commits

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)

2024-05-28 Thread Louis Dionne via cfe-commits

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)

2024-05-28 Thread Louis Dionne via cfe-commits

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)

2024-05-28 Thread Louis Dionne via cfe-commits

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)

2024-05-28 Thread Louis Dionne via cfe-commits

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)

2024-05-28 Thread Louis Dionne via cfe-commits

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)

2024-05-28 Thread Louis Dionne via cfe-commits

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)

2024-05-28 Thread Louis Dionne via cfe-commits


@@ -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)

2024-05-27 Thread Louis Dionne via cfe-commits


@@ -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)

2024-05-27 Thread Louis Dionne via cfe-commits


@@ -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


  1   2   3   4   5   6   7   8   >