• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stillwater-sc / universal / 30536515033
85%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 30 Jul 2026 11:25AM UTC
Jobs 1
Files 599
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

30 Jul 2026 10:54AM UTC coverage: 85.216% (-0.03%) from 85.244%
30536515033

push

github

web-flow
fix: eliminate implicit limb-mask narrowing via shared bit_clear_mask helper (#1260) (#1266)

The idiom `bt null = ~(1ull << (i % bitsInBlock))` builds a 64-bit mask and
implicitly narrows it to the limb type bt in every setbit. The truncation is
intended (only the low bitsInBlock bits matter) but implicit, so GCC/Clang
-Wconversion and MSVC C4244 fire at every template instantiation site (observed
flooding stillwater-sc/mp-blas CI).

Add a dependency-free constexpr helper in internal/bit_manipulation.hpp:

    template<typename bt>
    constexpr bt bit_clear_mask(unsigned i, unsigned bitsInBlock) noexcept {
        return static_cast<bt>(~(bt(1) << (i % bitsInBlock)));
    }

making the truncation explicit (warning-free) in ONE place, and route all sites
through it. The issue listed 5 files; the identical idiom was actually in 10
(blockbinary, blockfraction, blocksignificand, cfloat, lns, posit_exponent,
integer, takum, areal, dbns) -- all converted so the idiom cannot drift into the
next number system. posit_exponent's std::uint32_t variant uses
bit_clear_mask<std::uint32_t>(i, 32).

Verified: the helper is -Wconversion/-Werror clean on gcc + clang and produces
the identical mask for every bit position of uint8/16/32/64 (new regression
internal/blockbinary/api/bit_clear_mask.cpp, with constexpr static_asserts). All
10 consumers compile + run clean on both compilers; bb_api, cfloat_api/assignment,
posit_api/conversion, lns_api, areal_api PASS (setbit behavior unchanged).

Resolves #1260

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

34 of 52 new or added lines in 12 files covered. (65.38%)

10 existing lines in 1 file now uncovered.

41628 of 48850 relevant lines covered (85.22%)

7263004.46 hits per line

Uncovered Changes

Lines Coverage ∆ File
18
55.0
internal/blockbinary/api/bit_clear_mask.cpp

Coverage Regressions

Lines Coverage ∆ File
10
31.43
-3.57% include/sw/universal/verification/test_suite_randoms.hpp
Jobs
ID Job ID Ran Files Coverage
1 30536515033.1 30 Jul 2026 11:25AM UTC 599
85.22
GitHub Action Run
Source Files on build 30536515033
  • Tree
  • List 599
  • Changed 11
  • Source Changed 10
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30536515033
  • 120ce5ce on github
  • Prev Build on main (#30509691191)
  • Next Build on main (#30545755105)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc