3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-21 16:16:38 +00:00

Avoid broken stack by mbp_arrays

This commit is contained in:
Kirill A. Korinsky 2024-08-26 20:17:14 +02:00
parent cff1e9233f
commit dc752913a6
No known key found for this signature in database
GPG key ID: 98D8D9867759226E
3 changed files with 11 additions and 6 deletions

View file

@ -745,6 +745,10 @@ struct model_evaluator::imp : public rewriter_tpl<mev::evaluator_cfg> {
}
};
model_evaluator::model_evaluator(model_evaluator & mev) {
m_imp = mev.m_imp;
}
model_evaluator::model_evaluator(model_core & md, params_ref const & p) {
m_imp = alloc(imp, md, p);
}

View file

@ -32,6 +32,7 @@ class model_evaluator {
struct imp;
imp * m_imp;
public:
model_evaluator(model_evaluator & mev);
model_evaluator(model_core & m, params_ref const & p = params_ref());
~model_evaluator();

View file

@ -60,7 +60,7 @@ namespace mbp {
ast_manager& m;
array_util m_arr_u;
model_ref M;
model_evaluator* m_mev;
model_evaluator* m_mev = nullptr;
app_ref m_v; // array var to eliminate
ast_mark m_has_stores_v; // has stores for m_v
expr_ref m_subst_term_v; // subst term for m_v
@ -499,7 +499,7 @@ namespace mbp {
model_evaluator mev(mdl);
mev.set_model_completion(true);
M = &mdl;
m_mev = &mev;
flet<model_evaluator*> _mev(m_mev, &mev);
unsigned j = 0;
for (unsigned i = 0; i < arr_vars.size (); i++) {
@ -546,7 +546,7 @@ namespace mbp {
expr_ref_vector m_pinned; // to ensure a reference
expr_ref_vector m_idx_lits;
model_ref M;
model_evaluator* m_mev;
model_evaluator* m_mev = nullptr;
th_rewriter m_rw;
ast_mark m_arr_test;
ast_mark m_has_stores;
@ -726,7 +726,7 @@ namespace mbp {
model_evaluator mev(mdl);
mev.set_model_completion(true);
M = &mdl;
m_mev = &mev;
flet<model_evaluator*> _mev(m_mev, &mev);
m_reduce_all_selects = reduce_all_selects;
// mark vars to eliminate
@ -778,7 +778,7 @@ namespace mbp {
app_ref_vector m_sel_consts;
expr_ref_vector m_idx_lits;
model_ref M;
model_evaluator* m_mev;
model_evaluator* m_mev = nullptr;
expr_safe_replace m_sub;
ast_mark m_arr_test;
@ -1010,7 +1010,7 @@ namespace mbp {
model_evaluator mev(mdl);
mev.set_model_completion(true);
M = &mdl;
m_mev = &mev;
flet<model_evaluator*> _mev(m_mev, &mev);
// mark vars to eliminate
// alloc empty map from array var to sel terms over it