-
Notifications
You must be signed in to change notification settings - Fork 13.9k
Description
This is a tracking issue for CI compilation errors related to missing SSE2 types encountered when trying to use latest Windows 2022 runner image 20250224.5.0+ on the i686-msvc-{1,2} and dist-i686-msvc jobs. Key difference for the image version is the Windows 11 SDK version bump from 10.0.22621.0 -> 10.0.26100.0 that modified UCRT headers (see below).
Context
Zulip thread: https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/spurious.20.28.3F.29.20i686.20msvc.20errors.
cc <= 1.2.15 emits /arch:IA32 for clang-cl on x86 arch Windows targets, which in conjunction with GitHub Runner Image versions Windows 2022 20250224.5.0+ seems to cause a bunch of failures related to compilation errors failing to using SSE2 types without enabling SSE2 via /arch:SSE2. msvc seems to silently accept this1 and happily emit SSE2 instruments but clang-cl will error.
As Fulgen pointed out (thanks!) on the zulip thread:
The UCRT headers are, which is where they differ (10.0.22621.0/ucrt/wchar.h doesn't have the vectorization, 10.0.26100.0/ucrt/wchar.h does)
Current mitigation attempts
- On the
ccside: clang-cl: use/arch:SSE2forx86target arch cc-rs#1425 (In progress): Use Windows 2019 for 32-bit MSVC CI jobs #137732- Not going to work. A ui test failure. Old msvc toolchain has old cdb that will fail debuginfo tests.
(In progress) use large runners since they haven't been updated yet: Fix 32-bit MSVC CI #137749- To buy time, but going to break again once github updates large runners to use new image.
- [do not merge] fix 32-bit MSVC CI [alt version] #137754
- Downgrade 32-bit Windows SDK to 10.0.22621.0 in CI #137766
- The large runners were updated already, trying a different approach in Remove latest Windows SDK from 32-bit CI #137753.
Work needed to unblock using latest Windows 2022 runner image 20250224.5.0+ again
Warning
These steps are advisory and likely incomplete, we may find that we need to transitively bump cc versions in more deps.
- Fix
ccto not emit/arch:IA32, but instead either omit it or explicitly set/arch:SSE2forclang-clonx86: clang-cl: use/arch:SSE2forx86target arch cc-rs#1425- Release a new patch version of
cc: https://github.com/rust-lang/cc-rs/releases/tag/cc-v1.2.16
- Release a new patch version of
- Have
cargobump itsccversion to the new version: Bumpccto 1.2.16 to fixx86windows jobs in rust-lang/rust CI cargo#15245 - Sync
cargosubmodule that contains the bumpedcc: Update cargo #137791. - Bump
rustc_{codegen_ssa,llvm}ccto=1.2.16: Bumprustc_{codegen_ssa,llvm}ccto 1.2.16 to fixx86Windows jobs on newest Windows SDK #137788. - Revert remove-new-SDK workaround, and confirm that we can successfully run
i686-msvc-{1,2}anddist-i686-msvc, including the compiler crates and cargo: Revert "Remove Win SDK 10.0.26100.0 from CI" #137849.