3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-12 04:03:39 +00:00

Gcc 15 two phase (#7313)

* Fix `-Wclass-memaccess`

* Fix for GCC 15 two-phase lookup

* GCC 15 is more aggressive about checking dependent names:
  https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=r15-2117-g313afcfdabeab3

Bug: https://bugs.gentoo.org/936634
This commit is contained in:
David Seifert 2024-07-29 20:07:10 +02:00 committed by GitHub
parent 25e683e4e1
commit 2ce89e5f49
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 36 additions and 37 deletions

View file

@ -97,42 +97,41 @@ public:
}; };
struct statistics { struct statistics {
unsigned m_make_feasible; unsigned m_make_feasible = 0;
unsigned m_total_iterations; unsigned m_total_iterations = 0;
unsigned m_iters_with_no_cost_growing; unsigned m_iters_with_no_cost_growing = 0;
unsigned m_num_factorizations; unsigned m_num_factorizations = 0;
unsigned m_num_of_implied_bounds; unsigned m_num_of_implied_bounds = 0;
unsigned m_need_to_solve_inf; unsigned m_need_to_solve_inf = 0;
unsigned m_max_cols; unsigned m_max_cols = 0;
unsigned m_max_rows; unsigned m_max_rows = 0;
unsigned m_gcd_calls; unsigned m_gcd_calls = 0;
unsigned m_gcd_conflicts; unsigned m_gcd_conflicts = 0;
unsigned m_cube_calls; unsigned m_cube_calls = 0;
unsigned m_cube_success; unsigned m_cube_success = 0;
unsigned m_patches; unsigned m_patches = 0;
unsigned m_patches_success; unsigned m_patches_success = 0;
unsigned m_hnf_cutter_calls; unsigned m_hnf_cutter_calls = 0;
unsigned m_hnf_cuts; unsigned m_hnf_cuts = 0;
unsigned m_nla_calls; unsigned m_nla_calls = 0;
unsigned m_gomory_cuts; unsigned m_gomory_cuts = 0;
unsigned m_nla_add_bounds; unsigned m_nla_add_bounds = 0;
unsigned m_nla_propagate_bounds; unsigned m_nla_propagate_bounds = 0;
unsigned m_nla_propagate_eq; unsigned m_nla_propagate_eq = 0;
unsigned m_nla_lemmas; unsigned m_nla_lemmas = 0;
unsigned m_nra_calls; unsigned m_nra_calls = 0;
unsigned m_nla_bounds_improvements; unsigned m_nla_bounds_improvements = 0;
unsigned m_horner_calls; unsigned m_horner_calls = 0;
unsigned m_horner_conflicts; unsigned m_horner_conflicts = 0;
unsigned m_cross_nested_forms; unsigned m_cross_nested_forms = 0;
unsigned m_grobner_calls; unsigned m_grobner_calls = 0;
unsigned m_grobner_conflicts; unsigned m_grobner_conflicts = 0;
unsigned m_offset_eqs; unsigned m_offset_eqs = 0;
unsigned m_fixed_eqs; unsigned m_fixed_eqs = 0;
::statistics m_st; ::statistics m_st = {};
statistics() { reset(); }
void reset() { void reset() {
memset(this, 0, sizeof(*this)); *this = statistics{};
m_st.reset();
} }
void collect_statistics(::statistics& st) const { void collect_statistics(::statistics& st) const {
st.update("arith-factorizations", m_num_factorizations); st.update("arith-factorizations", m_num_factorizations);

View file

@ -79,7 +79,7 @@ public:
ref(static_matrix & m, unsigned row, unsigned col):m_matrix(m), m_row(row), m_col(col) {} ref(static_matrix & m, unsigned row, unsigned col):m_matrix(m), m_row(row), m_col(col) {}
ref & operator=(T const & v) { m_matrix.set( m_row, m_col, v); return *this; } ref & operator=(T const & v) { m_matrix.set( m_row, m_col, v); return *this; }
ref operator=(ref & v) { m_matrix.set(m_row, m_col, v.m_matrix.get(v.m_row, v.m_col)); return *this; } ref operator=(ref & v) { m_matrix.set(m_row, m_col, v.m_matrix.get_elem(v.m_row, v.m_col)); return *this; }
operator T () const { return m_matrix.get_elem(m_row, m_col); } operator T () const { return m_matrix.get_elem(m_row, m_col); }
}; };

View file

@ -92,7 +92,7 @@ static_matrix<T, X>::static_matrix(static_matrix const &A, unsigned * /* basis *
init_row_columns(m, m); init_row_columns(m, m);
for (; m-- > 0; ) for (; m-- > 0; )
for (auto & col : A.m_columns[m]) for (auto & col : A.m_columns[m])
set(col.var(), m, A.get_value_of_column_cell(col)); set(col.var(), m, A.get_column_cell(col));
} }
template <typename T, typename X> void static_matrix<T, X>::clear() { template <typename T, typename X> void static_matrix<T, X>::clear() {