mirror of
https://github.com/Z3Prover/z3
synced 2025-06-29 09:28:45 +00:00
Fix memout detected in nightly regressions
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
9634d66699
commit
050ec0b760
1 changed files with 20 additions and 2 deletions
|
@ -55,13 +55,28 @@ private:
|
||||||
bool m_use_solver1_results;
|
bool m_use_solver1_results;
|
||||||
ref<solver> m_solver1;
|
ref<solver> m_solver1;
|
||||||
ref<solver> m_solver2;
|
ref<solver> m_solver2;
|
||||||
|
// We delay sending assertions to solver 2
|
||||||
|
// This is relevant for big benchmarks that are meant to be solved
|
||||||
|
// by a non-incremental solver.
|
||||||
|
bool m_solver2_initialized;
|
||||||
|
|
||||||
bool m_ignore_solver1;
|
bool m_ignore_solver1;
|
||||||
inc_unknown_behavior m_inc_unknown_behavior;
|
inc_unknown_behavior m_inc_unknown_behavior;
|
||||||
unsigned m_inc_timeout;
|
unsigned m_inc_timeout;
|
||||||
|
|
||||||
|
void init_solver2_assertions() {
|
||||||
|
if (m_solver2_initialized)
|
||||||
|
return;
|
||||||
|
unsigned sz = m_solver1->get_num_assertions();
|
||||||
|
for (unsigned i = 0; i < sz; i++) {
|
||||||
|
m_solver2->assert_expr(m_solver1->get_assertion(i));
|
||||||
|
}
|
||||||
|
m_solver2_initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
void switch_inc_mode() {
|
void switch_inc_mode() {
|
||||||
m_inc_mode = true;
|
m_inc_mode = true;
|
||||||
|
init_solver2_assertions();
|
||||||
}
|
}
|
||||||
|
|
||||||
struct aux_timeout_eh : public event_handler {
|
struct aux_timeout_eh : public event_handler {
|
||||||
|
@ -106,6 +121,7 @@ public:
|
||||||
m_solver1 = s1;
|
m_solver1 = s1;
|
||||||
m_solver2 = s2;
|
m_solver2 = s2;
|
||||||
updt_local_params(p);
|
updt_local_params(p);
|
||||||
|
m_solver2_initialized = false;
|
||||||
m_inc_mode = false;
|
m_inc_mode = false;
|
||||||
m_check_sat_executed = false;
|
m_check_sat_executed = false;
|
||||||
m_use_solver1_results = true;
|
m_use_solver1_results = true;
|
||||||
|
@ -132,6 +148,7 @@ public:
|
||||||
if (m_check_sat_executed)
|
if (m_check_sat_executed)
|
||||||
switch_inc_mode();
|
switch_inc_mode();
|
||||||
m_solver1->assert_expr(t);
|
m_solver1->assert_expr(t);
|
||||||
|
if (m_solver2_initialized)
|
||||||
m_solver2->assert_expr(t);
|
m_solver2->assert_expr(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,6 +156,7 @@ public:
|
||||||
if (m_check_sat_executed)
|
if (m_check_sat_executed)
|
||||||
switch_inc_mode();
|
switch_inc_mode();
|
||||||
m_solver1->assert_expr(t, a);
|
m_solver1->assert_expr(t, a);
|
||||||
|
init_solver2_assertions();
|
||||||
m_solver2->assert_expr(t, a);
|
m_solver2->assert_expr(t, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue