Repository navigation
Silence the Windows HIP build's 83,362 warnings, and keep the Linux ones - #528
Merged
Merged
Conversation
Measured in run 38172107721: the Windows ROCm job's log is 714,345 lines with 83,362 warning messages, while the Linux ROCm job -- the same upstream sources, the same TheRock clang, the same 23 GPU targets -- has 9 warnings in 2,455 lines. The Windows job is 60 times larger than the next biggest job of that run and carries 98.5 percent of all warnings its Windows jobs emit; SYCL is second with 724 in 12k lines, everything else is between 0 and 407. The cause is the language, not the arch count. Upstream compiles the HIP sources as plain C++ on Windows (CXX_IS_HIPCC on WIN32) and as the HIP language on Linux, and clang's C++ frontend reports what the HIP one does not: sign-compare 29,673 times, nested-anon-types 17,964, missing-noreturn 16,378, then unused variables, missing braces, unused parameters, cast-qual and unreachable breaks. Every one of them is in ggml/src/ggml-cuda/*.cu, upstream's own code -- not a line of ours, and nothing we would ever act on. So -w on the ggml-hip target, Windows only, which subsumes the dllimport suppression added earlier. Suppressing a whole warning set is normally the wrong instrument, and what makes it right here is the Linux job: it compiles the same sources and keeps every warning in a log short enough to read, so the information is preserved where it is legible and dropped where it is multiplied by 23. It also ends the alternative, which was chasing one more warning class per toolchain bump. Errors are untouched -- a real compile failure still fails the job. The answer to whether other jobs need the same is measured rather than assumed: no. The table in TODO.md lists all eight, and outside the ROCm job the logs are between 1,068 and 11,981 lines, which is readable. Worth an upstream issue with that table, since their own windows-rocm job pays the identical cost and the fix is theirs -- either the warnings or the C++-on-Windows choice. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E2h8gXyyE5UeimkL9vQv9G
bernardladenthin
had a problem deploying
to
maven-central
October 11, 2026 23:36 — with
GitHub Actions
Failure
bernardladenthin
had a problem deploying
to
maven-central
October 11, 2026 23:36 — with
GitHub Actions
Failure
|
This branch had an error being deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Measured in run 38172107721, and the comparison is the whole argument:
The Windows ROCm job is 60× larger than the next biggest and carries 98.5 % of every warning
its Windows jobs emit. The Linux ROCm job compiles the same upstream sources with the same TheRock
clang for the same 23 GPU targets — and produces nine warnings.
The cause is the language, not the arch count
Upstream compiles the HIP sources as plain C++ on Windows (
CXX_IS_HIPCConWIN32) and as theHIP language on Linux. Clang's C++ frontend reports what the HIP one does not:
-Wsign-compare-Wnested-anon-types-Wmissing-noreturn-Wunused-variable-Wmissing-braces-Wunused-parameter-Wcast-qual/-Wunreachable-code-break/ 2 moreEvery one is in
ggml/src/ggml-cuda/*.cu— upstream's own code. Not one line of ours, and nothingwe would ever act on.
-wonggml-hip, Windows onlySuppressing a whole warning set is normally the wrong instrument. What makes it right here is the
Linux job: it compiles the same sources and keeps every warning, in a log short enough to read. The
information is preserved where it is legible and dropped where it is multiplied by 23.
It also ends the alternative, which was chasing one more class per toolchain bump — eight today. And
it subsumes the
-Wno-ignored-attributesadded for the dllimport flood, so that becomes one flaginstead of a growing list.
Errors are untouched: a real compile failure still fails the job.
Whether other jobs need the same: measured, not assumed
No. Outside the ROCm job every log is between 1,068 and 11,981 lines, which is readable. SYCL's
724 warnings come from
icxon upstream code and may carry information worth keeping; nothing thereis multiplied into six figures.
Upstream
Worth an issue with that table — their own
windows-rocmjob pays the identical cost, and the fix istheirs: either the warnings or the C++-on-Windows choice. Recorded in
TODO.mdnext to the otherthree measured upstream findings.
check-natives.py0 disagreements. The effect is only observable in a ROCm job: this is one compileflag on one target, and the next run's line count is the measurement.
🤖 Generated with Claude Code
https://claude.ai/code/session_01E2h8gXyyE5UeimkL9vQv9G