SYCL strict-diagnostics cleanup — 2026-09-21¶
Finding¶
The oneAPI feature-kernel path had two independent blind spots. Several SYCL translation units built successfully while emitting file-local clang-tidy and HISS findings, and the Meson AOT command forwarded an Intel device selector with unqualified -Xs even though the command also emitted a portable spir64 target. oneAPI 2026 therefore reported the selector as unused. The custom-command compilation-database translator also did not understand the target-qualified replacement, so changing the build flag alone would have broken the analyzer projection.
This is whole-tree policy: a diagnostic is actionable regardless of whether the affected source began in Netflix/vmaf or in the fork. No golden assertion, numeric tolerance, baseline, or suppression was changed.
Repair and preservation contract¶
- Split long kernel, allocation, submission, collection, and cleanup paths at existing phase boundaries; preserve filter coefficients, loop and reduction order, option values, buffer geometry, feature names, and fp32-only device arithmetic.
- Replace narrowing and widening expressions with explicit size-domain arithmetic and validate every allocation used by the touched path.
- Scope
-device <list>tospir64_genwith-Xsycl-target-backend=spir64_gen, retainingspir64as the portable fallback. - Let Meson's built-in
c_stdandcpp_stdfallback lists select compiler spellings. Keep only the MSVC C/std:clatestoverride needed to exceed itsc17mapping. - Strip both legacy and target-scoped AOT backend arguments from the synthetic clang-tidy command. A pre-commit unit test locks the Meson and translator contracts together.
Alternatives considered¶
Ignoring diagnostics from inherited sources was rejected because origin does not change runtime risk. Adding NOLINT, lowering a ratchet, or filtering the affected rules was rejected because each finding had a direct structural or type-safe repair. Dropping the portable spir64 target would silence the AOT warning but remove fallback-device support. Keeping manual language-standard probing was rejected because it duplicated Meson's selected standard and was itself the source of configure warnings.
Validation¶
The acceptance gate is a oneAPI object build plus file-local clang-tidy and HISS checks for every touched SYCL translation unit, the SYCL AOT contract unit test, and a fresh Meson configure that reports no standard-option or AOT warning. Cppcheck and repository pre-commit hooks run over the final staged change. Exact commands and tool versions are preserved in the pull-request receipt.