Conversation
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.
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.
No description provided.