Skip to content

Fixes2#172

Merged
PatWie merged 3 commits into
mainfrom
fixes2
Jun 29, 2026
Merged

Fixes2#172
PatWie merged 3 commits into
mainfrom
fixes2

Conversation

@PatWie

@PatWie PatWie commented Jun 29, 2026

Copy link
Copy Markdown
Owner

No description provided.

PatWie added 3 commits June 28, 2026 21:55
Enable -Wall -Wextra -Wdouble-promotion -Werror in CI Bazel builds
so regressions are caught immediately.

Add float_scalar_test that instantiates L-BFGS, BFGS, gradient
descent, conjugate gradient, and Newton with float ScalarType.
This exercises code paths that only trigger double-promotion or
narrowing when the scalar is not double.

Add a separate sanitizer CI job (ASAN + UBSAN) to catch memory
errors and undefined behavior.

Fix remaining double-promotion sites in lbfgsb.h and armijo.h.
Fix armijo.h passing Eigen expression templates where VectorType
is required (call .eval() on the expression).
Fix unused-variable warnings in test files.
Replace deprecated TYPED_TEST_CASE with TYPED_TEST_SUITE.
Add [[maybe_unused]] annotations where if-constexpr branches
leave parameters unused.
The -Werror CI build failed on two fronts that the strict-warnings
commit did not cover.

First, verify.cc invoked gtest's variadic TYPED_TEST_SUITE(CaseName,
Types, ...) with only two arguments. Under -Wpedantic GCC rejects the
empty trailing __VA_ARGS__ as a GNU extension ("ISO C++11 requires at
least one argument for the ... in a variadic macro"). Rather than
suppress the diagnostic, supply the macro's documented optional third
argument: a type-name generator. That makes __VA_ARGS__ non-empty so
the invocation is strictly conforming, and names each typed-test
instantiation after its scalar type instead of a bare index.

Second, the two Dynamic-dimension trust-region tests bound a `progress`
result they never read, tripping -Wunused-variable. Instead of voiding
it, assert on it: the solver must converge within its iteration budget
rather than exhaust it. Which convergence criterion fires depends on
Hessian conditioning -- the 2-D case trips the gradient-norm test, the
worse-conditioned 5-D case trips the x-delta test first -- so the
assertion checks the stable invariant (status is not IterationLimit)
rather than a specific success status.

Verified with `bazel test //... --copt=-Wall --copt=-Wextra
--copt=-Wpedantic --copt=-Wdouble-promotion --copt=-Werror` (all green)
and under the ASAN+UBSAN sanitizer flags.
Replace the generic macOS platform identifier with the more specific
macOS ARM64 variant in the Bazel Central Registry presubmit matrix.
This ensures CI testing runs on the correct macOS architecture,
improving compatibility verification for ARM-based macOS systems.
@PatWie PatWie merged commit 86f3ee9 into main Jun 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant