mirror of
https://github.com/Z3Prover/z3
synced 2025-04-08 02:15:19 +00:00
avoid use-before-def crashes fp-operations.smt2
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
dfbbea31b7
commit
b8716b3339
|
@ -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);
|
||||
|
|
|
@ -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<expr_ref_vector> stores1, stores2;
|
||||
bool args_are_unique1, args_are_unique2;
|
||||
expr_ref else1(m()), else2(m());
|
||||
|
|
Loading…
Reference in a new issue