compiler-explorer / compiler-explorer/dotnet-builder

Daily build broken since 2026-08-14: riscv64 community altjit fails -Werror,-Wformat

Open
#31 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
14
Forks
4
PR merge metrics
No merged PRs in 30d

Description

The `dotnet` daily build has failed every day since **2026-08-14**.

```
FAILED: jit/CMakeFiles/clrjit_unix_riscv64_x64.dir/emitriscv64.cpp.o
/root/dotnet/runtime/src/coreclr/jit/emitriscv64.cpp:4775:41: error: format specifies type 'int'
but the argument has type 'emitter::MajorOpcode' [-Werror,-Wformat]
4775 | printf("MajorOpcode: %d\n", GetMajorOpcode(code));
| ~~ ^~~~~~~~~~~~~~~~~~~~
| static_cast( )
1 error generated.
```

`GetMajorOpcode` returns a scoped enum, which `%d` rejects under `-Werror -Wformat` with clang-18. I checked `dotnet/runtime` main today and the line is still unchanged, so this is not something that has quietly fixed itself upstream.

### Why it only breaks us

`build/build.sh:12` sets `ALL_JITS_SUBSET="Clr.AllJitsCommunity"`, which turns on `CLR_CMAKE_BUILD_COMMUNITY_ALTJITS=1` and builds the riscv64 altjit. Upstream CI builds `Clr.AllJits`, so the community altjits are not gated on and can rot without anyone noticing. We have effectively opted into code upstream does not build.

### Effect

Silent, as usual for nightlies: no artifact means the old install stays. Newest tarball is `dotnet-trunk-20260814.tar.xz`, so the site's dotnet trunk has been frozen there for 10 days.

### Options

1. Wait for upstream, and accept the build staying red meanwhile.
2. Report it upstream so the community altjits build clean again.
3. Reconsider whether we need `Clr.AllJitsCommunity` rather than `Clr.AllJits`, if the community altjits are not actually surfaced in CE.

@hez2010 you know this build best. Is the riscv64 altjit something CE actually exposes, or would dropping back to `Clr.AllJits` be a reasonable way to stop upstream churn breaking us?

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with build/build.sh:12 to understand the Clr.AllJitsCommunity selection, then inspect emitriscv64.cpp around line 4775 and the reported riscv64 altjit build. Check whether CE exposes this community altjit or whether the upstream build failure should be reported. Done means the daily build succeeds without hiding the intended runtime targets.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp, shell
Domain
build-system, ci-cd
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.