Repository navigation
CI: add -Werror strict lane and an auto-discovered regression-test harness - #350
Merged
Merged
Conversation
Two pieces of CI hardening (#315): * WERROR opt-in (Make.inc) and a dedicated `strict-werror` CI job that builds with -Werror under both gcc and clang on a pinned ubuntu-24.04. It is off by default and pinned so a future compiler upgrade surfaces as one isolated failure rather than breaking the whole matrix. Fixes the warnings this surfaces in openlibm's own code: - irint(): mark the header-defined helper __unused (it is only used by e_rem_pio2*.c, so it is unused in every other TU). - lgamma_r/lgammal_r: zero-init nadj, which is written and read under the same hx<0 guard (-Wmaybe-uninitialized false positive). Clang-only -Wimplicit-int-float-conversion (intentional lround boundary trick) and -Wignored-attributes (pre-existing extern-inline fenv redeclarations) are documented and suppressed for the lane. * Regression harness: test/regression/*.c are self-contained programs (exit 0=pass, 77=skip, else=fail) auto-discovered and run by `make test` from the repo root, so later fixes can land a regression test by dropping in one file with no Makefile changes. The previously orphaned test-211.c (never built or run) is moved in as the first one. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #350 +/- ##
==========================================
+ Coverage 72.11% 72.12% +0.01%
==========================================
Files 233 233
Lines 6132 6135 +3
Branches 1607 1607
==========================================
+ Hits 4422 4425 +3
Misses 1417 1417
Partials 293 293 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The strict lane surfaced more on the CI compilers than on older local ones (verified against gcc 13 / clang 18): * gcc: zero-init nadj in the float lgammaf_r too (same guarded false-positive as the double/long-double versions). * clang 18 renamed the int->float conversion diagnostic to -Wimplicit-const-int-float-conversion; suppress that spelling as well. * clang: suppress -Wdeprecated-non-prototype (C23) for the lane; the K&R definitions in w_cabs*.c and bsdsrc/b_*.c are left for a focused prototype-conversion follow-up. Cross CI: build the regression programs with the cross toolchain in the "Build tests" step and pass the toolchain vars to the qemu run, so the foreign-arch regression binaries are produced by $TRIPLE-gcc instead of the host compiler. Verified locally by cross-building for riscv64 and running the regression test under qemu. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This was referenced Jun 22, 2026
social4hyq
pushed a commit
to social4hyq/homebrew-core
that referenced
this pull request
Sep 20, 2026
openlibm 0.8.8 Created-by: HarmonybrewBot Commit-by: HarmonybrewBot Merged-by: HarmonybrewBot Description: Created by `brew bump` --- Created with `brew bump-formula-pr`.<details> <summary>release notes</summary> <pre>## What's Changed * Update riscv64 fenv.c initialization to fix warnings by @ViralBShah in JuliaMath/openlibm#330 * Musl compatibility fixes for s390 and powerpc by @sertonix in JuliaMath/openlibm#331 * Fix cmake error for 4.x by @HIllya51 in JuliaMath/openlibm#333 * Bump actions/checkout from 4 to 5 by @dependabot[bot] in JuliaMath/openlibm#335 * Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in JuliaMath/openlibm#336 * Bump actions/checkout from 5 to 6 by @dependabot[bot] in JuliaMath/openlibm#338 * Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in JuliaMath/openlibm#339 * Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in JuliaMath/openlibm#341 * Bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in JuliaMath/openlibm#342 * ci: add native ARM (Linux + Windows) and Intel macOS runners by @ViralBShah in JuliaMath/openlibm#345 * ci: workflow hygiene (concurrency, timeouts, loongarch fold, mips64, fork-safe codecov) by @ViralBShah in JuliaMath/openlibm#346 * riscv: Fix feholdexcept() by @AlekseyZhmulin in JuliaMath/openlibm#324 * CI: add -Werror strict lane and an auto-discovered regression-test harness by @ViralBShah in JuliaMath/openlibm#350 * ci: speed up Windows jobs by trimming the msys2 install by @ViralBShah in JuliaMath/openlibm#354 * ci: make codecov coverage status informational by @ViralBShah in JuliaMath/openlibm#358 * riscv: allow single-precision float ABI (lp64f / ilp32f) by @ViralBShah in JuliaMath/openlibm#349 * Fix powl() returning NaN instead of +0 on extreme underflow (#334) by @ViralBShah in JuliaMath/openlibm#351 * Make powl() thread-safe (#222) by @ViralBShah in JuliaMath/openlibm#355 * Bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in JuliaMath/openlibm#359 * riscv64: Keep hard-float fenv functions private by @maleadt in JuliaMath/openlibm#360 ## New Contributors * @sertonix made their first contribution in JuliaMath/openlibm#331 * @HIllya51 made their first contribution in JuliaMath/openlibm#333 * @AlekseyZhmulin made their first contribution in JuliaMath/openlibm#324 **Full Changelog**: https://github.com/JuliaMath/openlibm/compare/v0.8.7...v0.8.8</pre> <p>View the full release notes at <a href="https://github.com/JuliaMath/openlibm/releases/tag/v0.8.8">https://github.com/JuliaMath/openlibm/releases/tag/v0.8.8</a>.</p> </details> <hr> See merge request: Harmonybrew/homebrew-core!18388
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.
Hardens CI per #315 and lays the test foundation the follow-up fix PRs build on.
1.
-Werrorstrict lane (#315)WERRORopt-in inMake.inc(default off, so a compiler upgrade can never break a normal build).strict-werrorCI job builds with-Werrorunder gcc and clang, pinned toubuntu-24.04so a future image/compiler bump shows up as one isolated failure instead of breaking the whole matrix.irint()is marked__unused— it lives inmath_private.hbut is only referenced bye_rem_pio2*.c, so it is unused in every other TU.lgamma_r/lgammal_r: zero-initnadj, which is written and read under the samehx < 0guard (a-Wmaybe-uninitializedfalse positive).-Wimplicit-int-float-conversion(the intentionallround/llroundboundary trick) and-Wignored-attributes(the pre-existing extern-inlinefenvredeclarations — left for a separate change).2. Auto-discovered regression harness
test/regression/*.care self-contained programs (exit0=pass,77=skip, else=fail), built and run bymake testfrom the repo root, so they locate the freshly built shared library the same way on every platform.test-211.c(never built or run by anything) becomes the first test under this harness.This is the base for the per-issue fix PRs that follow.