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
cc
side: clang-cl: use/arch:SSE2
forx86
target 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
cc
to not emit/arch:IA32
, but instead either omit it or explicitly set/arch:SSE2
forclang-cl
onx86
: clang-cl: use/arch:SSE2
forx86
target 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
cargo
bump itscc
version to the new version: Bumpcc
to 1.2.16 to fixx86
windows jobs in rust-lang/rust CI cargo#15245 - Sync
cargo
submodule that contains the bumpedcc
: Update cargo #137791. - Bump
rustc_{codegen_ssa,llvm}
cc
to=1.2.16
: Bumprustc_{codegen_ssa,llvm}
cc
to 1.2.16 to fixx86
Windows 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.