Skip to content

build(meson): stop icx and the clang-cl drivers warning about the project's own compile flags - #2401

Merged
lusoris merged 5 commits into
masterfrom
build/zero-warnings-driver-flags
Oct 7, 2026
Merged

lusoris merged 5 commits into
masterfrom
build/zero-warnings-driver-flags

Conversation

@lusoris

@lusoris lusoris commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Summary

icx reported -ffp-contract=off after -fp-model=precise as -Woverriding-option on every compile (7,300 warnings in one leg). The strict line is now -fp-model=precise -fno-fast-math -fcomplex-arithmetic=full -ffp-contract=off. Proof: on 182 translation units of this tree compiled both ways with icx 2026.0, the objects are byte-identical; 182 of 182 printed the warning with the old spelling, 0 with the new; clang -### argument lists differ only by the -fcomplex-arithmetic=full token and the predefined macros are equal; an icpx -fsycl probe object is identical too. test_strict_fp_compiler_args.py compiles a probe with -Werror (new spelling passes, old spelling must fail) and checks no vfmadd appears. The MSVC-syntax icx-cl driver keeps the old spelling (not measurable here). clang-cl and icx-cl are no longer offered -pedantic, -fvisibility=hidden and -fvisibility-inlines-hidden, which they ignored with a warning per compile.

Type

  • build / ci — tooling / infra

Checklist

  • Commits follow Conventional Commits.
  • Hooks green locally.
  • Unit tests pass: python3 core/test/test_strict_fp_compiler_args.py (19 tests; the icx test runs with oneAPI sourced).
  • SIMD/GPU: strict-FP policy spelling only; objects byte-identical.

Bug-status hygiene

  • no state delta: tracked by T-CI-WARNINGS-NON-MSVC-LEGS-2026-10-07.

Netflix golden-data gate

  • I did not modify any assertAlmostEqual(...) score in the Netflix golden Python tests. make test-netflix-golden equivalent run on this stack: 280 passed, 3 skipped.

Deep-dive deliverables

  • Research digest — no digest needed: mechanical warning cleanup; the measurements are in this body.
  • Decision matrix — ADR-2170 ## Alternatives considered.
  • AGENTS.md invariant note — core/AGENTS.d/strict-fp-compiler-args.md gained the icx spelling invariant.
  • Reproducer / smoke-test command — below.
  • CHANGELOG fragment — changelog.d/changed/zero-warnings-icx-and-clang-cl-driver-flags.md
  • Rebase note — added to docs/rebase-notes.md.

Reproducer

python3 core/test/test_strict_fp_compiler_args.py

Known follow-ups

Part of the stack of ADR-2170 (A initialisers and tags, B unused code and attributes, C driver flags, D the gate); each PR is based on the previous one and the train restacks them. Not in train.order (lands after the rc.3 tag). Remaining ungated legs and causes: docs/development/ci.md, "Warnings are errors".

@github-actions github-actions Bot added the type:build Build system / packaging label Oct 7, 2026
@lusoris
lusoris force-pushed the build/zero-warnings-driver-flags branch from 704ec20 to 0d95d16 Compare October 7, 2026 10:42
Comment on lines +19 to +20
static_cast<std::size_t>(capacity) >
(SIZE_MAX / sizeof(VmafFeatureExtractorContext *)) / 2u)
…PR merge (#2406)

* chore(release): restore 1.0.0-rc.3 after the unintended rc.4 release PR merge

The local merge train squash-merged release-please's PR #2397
(4daa287, "chore(master): release 1.0.0-rc.4") although no rc.4
cut was decided: its skip list named release PRs by number, and
release-please opened the next one under a new number.

This reverts 4daa287, so the eleven version files read 1.0.0-rc.3
again. The autorelease: pending label was removed from #2397 and the
queued release-please run cancelled before it ran: no v1.0.0-rc.4
release or tag exists. The train now skips every release-please--*
branch; a release PR lands only through the cut procedure.

State: T-RELEASE-PR-LANDED-WITHOUT-CUT-2026-10-07 (opened and closed).
…ses the retrain tooling in CI (#2198)

* feat(ai): add a resumable stage runner and a mini retrain that exercises the retrain tooling in CI

The one-shot retrain must not be the first end-to-end run of its tools.
`aiutils.pipeline` runs a list of stages with named early failures, resume
from per-stage manifests and recorded seeds, library versions, lock digest
and container identity. `ai/scripts/mini_retrain.py` runs the real scripts
on a generated 144-row corpus: extraction, feature checks, combination,
vmaf_tiny_v2..v4 and fr_regressor_v1 training and export, validation,
registry validation and a PLCC / SROCC / RMSE gate that fails on NaN.

The first run found that the `motion` column of every extracted table was
NaN (libvmaf emits no `integer_motion` key); `_lookup` now reads the SAD
score. `extract_full_features.py` gains `--assume-dims`.

* test(ai): type the mini retrain tests and helpers to the strict mypy profile

* docs: regenerate the indexes and the citation map after rebasing
… warnings of every non-MSVC leg (#2399)

* fix(build): clear the initialiser, tag, fallthrough and keyword-macro warnings of every non-MSVC leg

Option terminators and positional test tables that left fields out now say
`{0}` / `{}` or add `.cpu_opts = {NULL}`; the Metal option and extractor
tables list their designators in declaration order and use `.default_val =
{.b = ...}`; VmafThreadLocaleState is a struct in both files; implicit
fallthrough is `[[fallthrough]]`; vendored cJSON does not redefine the C23
keywords `true` / `false`; vmaf_next_fex_capacity() compares in size_t so
the check is not tautological on LP64; the HIP ADM twin no longer redefines
DIV_ROUND_UP. No computed value changes.

ADR-2170 records the program: leg by leg to zero warnings without
suppression, then warnings are errors per leg.

* docs: regenerate the indexes and the citation map after rebasing
…all warnings of every non-MSVC leg (#2400)

* fix(build): clear the unused-code, ignored-attribute and deprecated-call warnings of every non-MSVC leg

Code only a skipped or disabled configuration reaches is compiled only
there (test_ms_ssim_decimate, test_cambi_simd, test_ssimulacra2_simd,
test_read_pictures_convert, the registry helpers of model_loader.c on
Windows, the HIP error mappers without hipcc). VMAF_EXPORT is empty for GCC
on MinGW, where the visibility attribute is ignored and drew a -Wattributes
warning per use under LTO. The Win32 pthread shim spells __stdcall only in
the host pass of a SYCL build, and the SYCL linker pragma is host-only.
VmafRef is built with count 1 instead of calling std::atomic_init()
(deprecated in C++20), the ONNX Runtime headers are -isystem, and
test_metal_float_vif_math no longer names link_language, which made Meson
append -lc++ to a link the clang++ driver already completes. No computed
value changes.
…ject's own compile flags (#2401)

* fix(build): clear the unused-code, ignored-attribute and deprecated-call warnings of every non-MSVC leg

Code only a skipped or disabled configuration reaches is compiled only
there (test_ms_ssim_decimate, test_cambi_simd, test_ssimulacra2_simd,
test_read_pictures_convert, the registry helpers of model_loader.c on
Windows, the HIP error mappers without hipcc). VMAF_EXPORT is empty for GCC
on MinGW, where the visibility attribute is ignored and drew a -Wattributes
warning per use under LTO. The Win32 pthread shim spells __stdcall only in
the host pass of a SYCL build, and the SYCL linker pragma is host-only.
VmafRef is built with count 1 instead of calling std::atomic_init()
(deprecated in C++20), the ONNX Runtime headers are -isystem, and
test_metal_float_vif_math no longer names link_language, which made Meson
append -lc++ to a link the clang++ driver already completes. No computed
value changes.

* build(meson): stop icx and the clang-cl drivers warning about the project's own compile flags

icx reports `-ffp-contract=off` after `-fp-model=precise` as
-Woverriding-option on every compile. The strict line now reads
`-fp-model=precise -fno-fast-math -fcomplex-arithmetic=full
-ffp-contract=off`: on 182 translation units of this tree the objects of
the two spellings are byte-identical (clang -### differs only by the
spelled -fcomplex-arithmetic token). test_strict_fp_compiler_args compiles
with -Werror and holds the old spelling to fail. clang-cl and icx-cl are no
longer offered -pedantic, -fvisibility=hidden and
-fvisibility-inlines-hidden, which they ignored with a warning per compile.
@lusoris
lusoris force-pushed the build/zero-warnings-driver-flags branch from 0d95d16 to 838e0a4 Compare October 7, 2026 12:45
@lusoris
lusoris merged commit 838e0a4 into master Oct 7, 2026
11 of 81 checks passed
@lusoris
lusoris deleted the build/zero-warnings-driver-flags branch October 7, 2026 12:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:build Build system / packaging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants