From b8716b333908273ad8e27e325a8bea9be0596be3 Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Wed, 25 May 2016 14:32:39 -0700 Subject: [PATCH] avoid use-before-def crashes fp-operations.smt2 Signed-off-by: Nikolaj Bjorner --- src/ast/fpa/fpa2bv_converter.cpp | 18 +++++++++--------- src/model/model_evaluator.cpp | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ast/fpa/fpa2bv_converter.cpp b/src/ast/fpa/fpa2bv_converter.cpp index 7311751a3..7206cf890 100644 --- a/src/ast/fpa/fpa2bv_converter.cpp +++ b/src/ast/fpa/fpa2bv_converter.cpp @@ -1880,16 +1880,16 @@ void fpa2bv_converter::mk_round_to_integral(sort * s, expr_ref & rm, expr_ref & expr_ref div_p1(m); div_p1 = m_bv_util.mk_bv_add(div, m_bv_util.mk_numeral(1, sbits)); - expr_ref tie_pttrn(m), tie2(m), tie2_c(m), div_last(m), v51(m); - tie_pttrn = m_bv_util.mk_concat(one_1, m_bv_util.mk_numeral(0, sbits-1)); + expr_ref tie2(m), v51(m); + expr_ref tie_pttrn(m_bv_util.mk_concat(one_1, m_bv_util.mk_numeral(0, sbits - 1)), m); m_simp.mk_eq(rem, tie_pttrn, tie2); - div_last = m_bv_util.mk_extract(0, 0, div); - expr_ref div_last_eq_1(m), rte_and_dl_eq_1(m), rte_and_dl_eq_1_or_rta(m), tie_pttrn_ule_rem(m); - div_last_eq_1 = m.mk_eq(div_last, one_1); - rte_and_dl_eq_1 = m.mk_and(rm_is_rte, div_last_eq_1); - rte_and_dl_eq_1_or_rta = m.mk_or(rte_and_dl_eq_1_or_rta, rm_is_rta); - tie_pttrn_ule_rem = m_bv_util.mk_ule(tie_pttrn, rem); - tie2_c = m.mk_ite(tie2, rte_and_dl_eq_1_or_rta, tie_pttrn_ule_rem); + expr_ref div_last(m_bv_util.mk_extract(0, 0, div), m); + + expr_ref div_last_eq_1(m.mk_eq(div_last, one_1), m); + expr_ref rte_and_dl_eq_1(m.mk_and(rm_is_rte, div_last_eq_1), m); + expr_ref rte_and_dl_eq_1_or_rta(m.mk_or(rte_and_dl_eq_1, rm_is_rta), m); + expr_ref tie_pttrn_ule_rem(m_bv_util.mk_ule(tie_pttrn, rem), m); + expr_ref tie2_c(m.mk_ite(tie2, rte_and_dl_eq_1_or_rta, tie_pttrn_ule_rem), m); m_simp.mk_ite(tie2_c, div_p1, div, v51); dbg_decouple("fpa2bv_r2i_v51", v51); diff --git a/src/model/model_evaluator.cpp b/src/model/model_evaluator.cpp index 39de39584..eb2259263 100644 --- a/src/model/model_evaluator.cpp +++ b/src/model/model_evaluator.cpp @@ -262,11 +262,11 @@ struct evaluator_cfg : public default_rewriter_cfg { br_status mk_array_eq(expr* a, expr* b, expr_ref& result) { return BR_FAILED; - // disabled until made more efficient if (a == b) { result = m().mk_true(); return BR_DONE; } + // disabled until made more efficient vector stores1, stores2; bool args_are_unique1, args_are_unique2; expr_ref else1(m()), else2(m());