Commit Graph
1423 Commits
Author SHA1 Message Date
Martin Storsjö c77d93ace9 Revert "github: Drop -static-libstdc++ -static-libgcc from the openmp tests"
This reverts commit d6fbc4a7eb.

I'm going to revert the arm64x support, so this needs to be reverted
for now.
2026-07-28 18:44:40 +03:00
Martin Storsjö d6fbc4a7eb github: Drop -static-libstdc++ -static-libgcc from the openmp tests
With arm64ec now being built as arm64x, sharing DLLs with the
regular aarch64 target, we no longer need these options - the
regular libc++.dll/libunwind.dll from $PATH (from the toolchain
bin directory) work for the arm64ec build as well.
2026-07-28 10:42:39 +03:00
Jacek Caban 64effa9a71 Add ARM64X support
Extend the aarch64-w64-mingw32 prefix to provide ARM64EC libraries
alongside standard AArch64 libraries, replacing the separate
arm64ec-w64-mingw32 prefix. This aligns with how MSVC distributes
ARM64EC libraries and enables the linker to process both targets
simultaneously into a single hybrid binary.

This extensively utilizes LLVM's -marm64x option, compiling both
targets in a single compiler invocation to produce hybrid object
files (unlike MSVC tools, which require separate compilation passes).
2026-07-27 19:08:32 +02:00
Martin Storsjö 5e3f73a650 run-tests: Temporarily compile all executables before running them
When building throwcatch-main.exe, we link with "-L.". Since we
copy in the runtime libraries for executing tests, we might have
libc++.dll present if we aim for the target "test" while
compiling.

For arm64x builds, we could end up trying to link directly against
the arm64x libc++.dll rather than with the import library. Linking
directly against an arm64x DLL doesn't work yet in 23.1.0-rc1, so
avoid hitting this situation for now.

This is a temporary workaround; linking against an arm64x DLL should
work too, and the fix is being backported to the next RC.
2026-07-27 19:08:32 +02:00
Martin Storsjö 3f54c5b996 github: Test openmp on arm64ec too, in the test-openmp job 2026-07-21 11:32:43 +03:00
Martin Storsjö 20f2ac78ae tests: Test building/using openmp on arm64ec too 2026-07-21 11:32:43 +03:00
Martin Storsjö d7490b5ef2 build-openmp: Build openmp for arm64ec too 2026-07-21 11:32:43 +03:00
Martin Storsjö e5235c3287 build-llvm: Bump to LLVM 23.1.0 RC 1
Some notable changes since 22.x:
- Linking a weak declaration against a weak definition now works
  properly
- Many improvements for ARM64EC, including supporting linking
  against ARM64EC thin libraries
- Support for compiling for ARM64X (files targeting both native
  aarch64 and ARM64EC) with the -marm64x flag, which generates
  a multi-architecture object file. This should make it much
  more feasible, build system wise, to actually build things for
  ARM64X.
- Fixed aarch64 branch protection on Windows to use the right
  signing key (previously it the wrong one, which was inactive on
  Windows, and which broke unwinding in older versions of Wine)
2026-07-21 11:32:19 +03:00
Martin Storsjö 44c9c5fa20 build-mingw-w64: Bump to the latest version as of Jul 18th 2026-07-18 13:09:24 +03:00
Martin Storsjö 0abb154828 github: Don't add the bundled Python to PATH in test-llvm
Previously, we added the llvm-mingw bundled python to the head
of PATH, but we didn't expect to use it after all.

(In other tests, where we explicitly want to use the llvm-mingw
bundled python, we set -DPython3_EXECUTABLE="$Env:PYTHON_EXE.)

Previously (with runner image version 20260622.87.1), CMake ended
up choosing
C:/hostedtoolcache/windows/Python/3.13.14/x64/python3.exe, but
now (with runner image version 20260629.93.2) we ended up picking
C:/llvm-mingw/python/bin/python3.14.exe instead.

With the newer runner images, we do have
C:\hostedtoolcache\windows\Python\3.13.14\arm64\python3.exe in
PATH, but it is unclear why that doesn't get picked.

(Picking another version than the first one in PATH would make
sense if we'd have Python_FIND_STRATEGY=VERSION set. According to
the docs, that shouldn't be the default any longer though, and it
wouldn't explain why it picked 3.13 before when we provide
3.14.)

In any case, just skip adding our version to PATH since we
don't intend to use it, to make it use the system provided
version.
2026-07-05 23:20:24 +03:00
Martin Storsjö 170b7e1ec4 build-llvm: Bump to LLVM 22.1.8 2026-06-16 22:02:42 +03:00
Martin Storsjö 3dce018647 build-mingw-w64: Bump to the latest version as of Jun 16th 2026-06-16 22:02:25 +03:00
Martin Storsjö 5e74b0c0ea build-python: Update to Python 3.14.5 2026-06-05 18:50:50 +03:00
Martin Storsjö 0272df2cc1 build-llvm: Bump to LLVM 22.1.7 2026-06-02 12:20:07 +03:00
Martin Storsjö de5e31d1dd build-mingw-w64: Bump to the latest version as of Jun 2nd 2026-06-02 12:19:51 +03:00
Martin Storsjö 8adc11d4cf build-llvm: Bump to LLVM 22.1.6 2026-05-19 12:27:40 +03:00
Martin Storsjö 4ccd364457 build-mingw-w64: Bump to the latest version as of May 19th 2026-05-19 12:27:22 +03:00
Martin Storsjö ba72461e23 build-llvm: Bump to LLVM 22.1.5 2026-05-05 22:53:07 +03:00
Martin Storsjö 88885f361e build-mingw-w64: Update to the latest version as of May 5th 2026-05-05 22:52:21 +03:00
Martin Storsjö d69f101b09 docker: Update the system-clang testcase to use Clang 20
This is the newest version currently available in the Ubuntu 24.04
repos.

This fixes building; previously it failed to build libc++, which only
supports being built with one of the two preceding versions of Clang.
2026-04-28 14:23:41 +03:00
Martin Storsjö b59056fe41 docker: Remove arm64ec from the system-clang testcase
Building for arm64ec requires Clang/LLD 21.

This was added in cb92de78e7 without
considering the context in this testcase properly.
2026-04-28 14:18:16 +03:00
Martin Storsjö 61ddd976fe Revert "test: crt-test: Skip a test for cos(-NAN) == -NAN when optimizing"
This reverts commit 1d8c107d49.

After 49e14021be, when using F(-NAN)
instead of -F(NAN) to hide the negation, this test passes correctly.
I hadn't realized that GCC and Clang optimized cos(-x) = cos(x), when
I made 1d8c107d49 (and at the time, the
F() macro didn't work properly with -NAN on all toolchains).
2026-04-24 15:39:58 +03:00
Martin Storsjö 49e14021be test: crt-test: Prefer F(-NAN) instead of -F(NAN)
In the former form, the negation of NAN is hidden inside the
optimization blocking macro/wrapper. After
9be66e9d22, F(-NAN) works just as
well as -F(NAN).

This avoids test issues with recent optimizations in LLVM.
https://github.com/llvm/llvm-project/pull/193586 seems to make
the compiler consider known symmetry for hyperbolic math functions,
exploiting the fact that cosh(-x) is equal to cosh(x) (for values
other than NANs). By hiding the negation inside the F() wrapper,
the compiler can't reason about is existence.
2026-04-24 14:39:15 +03:00
Martin Storsjö e604eb6f1f test: crt-test: Remove a comment which no longer is accurate
Since 9be66e9d22, the F() macro
no longer uses strtod(), so the details about what strtod("NAN")
and strtod("-NAN") returns are no longer relevant.
2026-04-24 14:38:26 +03:00
Martin Storsjö b68aefdbb5 test: crt-test: Remove unused variables 2026-04-24 14:34:20 +03:00
Martin Storsjö 81fba99f8a build-llvm: Bump to LLVM 22.1.4 2026-04-21 11:59:07 +03:00
Martin Storsjö 11786a6d76 build-mingw-w64: Bump to the latest version as of April 21st 2026-04-21 11:57:48 +03:00
Martin Storsjö 49df766757 build-llvm: Bump to LLVM 22.1.3 2026-04-07 14:08:35 +03:00
Martin Storsjö 0456111453 build-mingw-w64: Bump to the latest version as of Apr 7th 2026-04-07 14:07:53 +03:00
Martin Storsjö 16f4a0af0c build-llvm: Bump to LLVM 22.1.2 2026-03-24 23:42:53 +02:00
Martin Storsjö dfb90d5ea7 build-mingw-w64: Bump to the latest version as of Mar 24th 2026-03-24 23:42:33 +02:00
Martin Storsjö abc77c22a8 build-compiler-rt: Stop providing asan in msvcrt builds
See 0b296aefc0 for context, where
we stopped testing asan in msvcrt builds - see discussion at
https://github.com/llvm/llvm-project/pull/120397,
https://github.com/mstorsjo/llvm-mingw/issues/224 and
https://github.com/mstorsjo/llvm-mingw/issues/552.

This should make it clearer that asan isn't supported in msvcrt
builds, instead of silently just providing files that are known
not to work.

See 4718b81419 for earlier context
for where we remove the asan runtimes in armv7/aarch64 builds,
where the files do get built, but they don't work properly yet
(even on UCRT).
2026-03-22 12:45:58 +02:00
Martin Storsjö 13e18154e6 github: Upgrade dawidd6/action-download-artifact to v19 2026-03-21 15:31:53 +02:00
Martin Storsjö c737c4a0b6 build-python: Add --with-pic to fix the native static libffi on x86_64
This fixes building python on x86_64 linux after
fabc4571b2.
2026-03-13 14:10:49 +02:00
Martin Storsjö 98dddfb9a4 github: Upgrade cache@v4 to cache@v5 2026-03-13 12:19:18 +02:00
Martin Storsjö c7e087fbd4 github: Upgrade download-artifact@v7 to download-artifact@v8
This has some behaviour changes, but I believe it shouldn't hit
our usage.
2026-03-13 12:19:18 +02:00
Martin Storsjö b8c5a4ffa1 github: Upgrade download-artifact@v4 to download-artifact@v7 2026-03-13 12:19:18 +02:00
Martin Storsjö ed1e71ba54 github: Upgrade upload-artifact@v4 to upload-artifact@v6 2026-03-13 12:19:18 +02:00
Martin Storsjö 89faddb7a3 github: Upgrade checkout@v4 to checkout@v6
checkout@v5 should be the same as checkout@v4, just running on
Node 24. checkout@v6 has got a few other minor changes that
shouldn't make any difference; opt in to newer behaviours now.
2026-03-13 12:19:18 +02:00
Martin Storsjö fabc4571b2 build-python: Build the native libffi as a static library only
This fixes importing the _ctypes module, if a shared libffi doesn't
happen to exist on the host system with the right so version.
Since Python 3.12, such a build error ends up failing the build,
while it previously passed silently even if some parts of the build
had failed.
2026-03-13 12:18:30 +02:00
Martin Storsjö 84c8483eba github: Fix testing openmp in the runtimes build
This makes sure the openmp tests actually are executed; since
switching to the runtimes build of openmp for the tests (in
98684ab807), the tests weren't
executed, as it no longer found the tools necessary for executing
the tests - as they are expected to be specified differently
in the runtimes build mode.

This requires the commit 48a5119d8e7d7236a28c14d06ec215ef3366ef90
(backported to 22.x in 9794a7932465bdc244b327388905d66df38485e2,
part of the 22.1.1 release) in llvm-project, to be able to run
tests without actually building clang in the same build as the
test tools.
2026-03-11 22:00:27 +02:00
Martin Storsjö cb0e9ef0be build-llvm: Bump to LLVM 22.1.1 2026-03-11 09:39:31 +02:00
Martin Storsjö 644174c7cc build-mingw-w64: Bump to the latest version as of March 11th 2026-03-11 09:38:58 +02:00
Martin Storsjö a89f6c58f4 build-libcxx: Enable -D__USE_MINGW_ANSI_STDIO=1 for libcxx on x86
This ensures correctly formatted long doubles.

This fixes issue #545.
2026-03-03 10:52:42 +02:00
Martin Storsjö dc9837d908 test: Add the original test case for atomic loads of varying sizes
This covers the original testcase from
https://github.com/mstorsjo/llvm-mingw/issues/538.
2026-02-25 12:13:08 +02:00
Martin Storsjö 49afca5984 test: Add a test for atomic load/store of large integers
Test atomically loading/storing 128 bit integers on 64 bit, and
64 bit integers on 32 bit.

This test case covers the root cause of
https://github.com/mstorsjo/llvm-mingw/issues/538.
2026-02-25 12:13:08 +02:00
Martin Storsjö 9610c61240 build-llvm: Bump to LLVM 22.1.0 final 2026-02-24 10:26:41 +02:00
Martin Storsjö 1d8aa59fbf build-mingw-w64: Bump to the latest version as of Feb 24th 2026-02-24 10:26:00 +02:00
Martin Storsjö 98684ab807 github: Try to test openmp through the runtimes directory
Since 6295b8e763503644961f9087382f80965b98d466 in llvm-project,
one no longer can configure the openmp project entirely standalone,
one has to do it through the runtimes directory.

However, in practice, this currently leads to no tests being
executed at all, as the runtimes build setup doesn't support
pointing to an external FileCheck executable - it currently has
to be part of a full bootstrapping build.
2026-02-19 23:37:10 +02:00
Martin Storsjö f415e25b3e build-openmp: Switch to building through the runtimes directory
Since 6295b8e763503644961f9087382f80965b98d466 in llvm-project,
it's no longer possible to build openmp entirely standalone;
now one has to build it through the runtimes directory.
2026-02-19 23:32:42 +02:00