Skip to content

[libcxx] [ci] Update Clang on Windows #152206

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 6, 2025

Conversation

mstorsjo
Copy link
Member

@mstorsjo mstorsjo commented Aug 5, 2025

Update clang-cl/LLVM to 20.1.8.

Update to llvm-mingw 20250709 (with also is built on LLVM 20.1.8). This release of llvm-mingw is the first release to be built with PGO, making it significantly faster for the CI runs (on par with the clang-cl cases); running the current tests in around 1 h rather than 1 h 20 min.

Update clang-cl/LLVM to 20.1.8.

Update to llvm-mingw 20250709 (with also is built on LLVM 20.1.8).
This release of llvm-mingw is the first release to be built with PGO,
making it significantly faster for the CI runs (on par with the
clang-cl cases); running the current tests in around 1 h rather than
1 h 20 min.
@llvmbot llvmbot added libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi. github:workflow labels Aug 5, 2025
@llvmbot
Copy link
Member

llvmbot commented Aug 5, 2025

@llvm/pr-subscribers-libcxx

@llvm/pr-subscribers-github-workflow

Author: Martin Storsjö (mstorsjo)

Changes

Update clang-cl/LLVM to 20.1.8.

Update to llvm-mingw 20250709 (with also is built on LLVM 20.1.8). This release of llvm-mingw is the first release to be built with PGO, making it significantly faster for the CI runs (on par with the clang-cl cases); running the current tests in around 1 h rather than 1 h 20 min.


Full diff: https://github.com/llvm/llvm-project/pull/152206.diff

1 Files Affected:

  • (modified) .github/workflows/libcxx-build-and-test.yaml (+2-2)
diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index 41a2aad1da236..4b29c9296bf9d 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -260,11 +260,11 @@ jobs:
       - name: Install a current LLVM
         if: ${{ matrix.mingw != true }}
         run: |
-          choco install -y llvm --version=19.1.7 --allow-downgrade
+          choco install -y llvm --version=20.1.8 --allow-downgrade
       - name: Install llvm-mingw
         if: ${{ matrix.mingw == true }}
         run: |
-          curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20250114/llvm-mingw-20250114-ucrt-x86_64.zip
+          curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20250709/llvm-mingw-20250709-ucrt-x86_64.zip
           powershell Expand-Archive llvm-mingw*.zip -DestinationPath .
           del llvm-mingw*.zip
           mv llvm-mingw* c:\llvm-mingw

@boomanaiden154
Copy link
Contributor

This release of llvm-mingw is the first release to be built with PGO, making it significantly faster for the CI runs (on par with the clang-cl cases); running the current tests in around 1 h rather than 1 h 20 min.

What are you using for perf training? And do you have ThinLTO enabled?

I've been thinking about PGO optimizing a toolchain for the Linux builds, but not sure if it's worth the complexity given the normal container image has so many different toolchain versions and in so many different configurations.

@mstorsjo mstorsjo merged commit fe0d67b into llvm:main Aug 6, 2025
67 checks passed
@mstorsjo
Copy link
Member Author

mstorsjo commented Aug 6, 2025

What are you using for perf training? And do you have ThinLTO enabled?

I've been thinking about PGO optimizing a toolchain for the Linux builds, but not sure if it's worth the complexity given the normal container image has so many different toolchain versions and in so many different configurations.

I enabled ThinLTO at the same time as I enabled PGO. On its own, ThinLTO hadn't given large enough improvements for me to bother with enabling it before. (Plus, before I built my unix based toolchains just as a single stage build with the preexisting distro toolchain.)

For perf training, I use this: https://github.com/mstorsjo/llvm-mingw/blob/master/pgo-training.make I essentially just compile three different source files; a simple hello world level C++ file (which probably could be skipped), sqlite (for massive code optimization training, but with a C source), and I compile a largish testcase from the libc++ testsuite (to cover C++ template stuff in the compiler frontend).

Not sure if I leave much performance on the table by only training on that small number of cases though; in practice this does seem to give quite decent speedups across the line.

For each of these three sources, I train compiling both with and without optimizations (as parts of the compiler backend hit entirely different codepaths in the no-optimizations case), and I cross compile these for all architectures involved in my toolchain. (Many PGO setups I've seen only train building for the main host architecture, which leaves other targets unprofiled.)

Although the main unusual thing in my setup is that I do profiling only once, and use that single profile PGO'ing the final toolchains for various platforms - see mstorsjo/llvm-mingw#503 for more of my background testing for this setup.

@mstorsjo mstorsjo deleted the libcxx-ci-update-win branch August 6, 2025 07:23
krishna2803 pushed a commit to krishna2803/llvm-project that referenced this pull request Aug 12, 2025
Update clang-cl/LLVM to 20.1.8.

Update to llvm-mingw 20250709 (with also is built on LLVM 20.1.8). This
release of llvm-mingw is the first release to be built with PGO, making
it significantly faster for the CI runs (on par with the clang-cl
cases); running the current tests in around 1 h rather than 1 h 20 min.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
github:workflow libc++ libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants