3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-08 18:31:49 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-08-09 17:06:05 -07:00
parent ce84e0f240
commit 42e21458ba

View file

@ -2729,7 +2729,6 @@ br_status bv_rewriter::mk_ite_core(expr * c, expr * t, expr * e, expr_ref & resu
result = e;
return BR_REWRITE1;
}
const unsigned sz = m_util.get_bv_size(rhs);
if (sz == 1) { // detect (lhs = N) ? C : D, where N, C, D are 1 bit numerals
numeral rhs_n, e_n, t_n;
@ -2742,12 +2741,24 @@ br_status bv_rewriter::mk_ite_core(expr * c, expr * t, expr * e, expr_ref & resu
result = m().are_equal(rhs, t) ? lhs : m_util.mk_bv_not(lhs);
return BR_REWRITE1;
}
if (rhs_n.is_one() && t_n.is_one() && e_n.is_zero()) {
return mk_zero_extend(t_sz - 1, lhs, result);
}
if (rhs_n.is_zero() && t_n.is_one() && e_n.is_zero()) {
return mk_zero_extend(t_sz - 1, m_util.mk_bv_not(lhs), result);
}
if (rhs_n.is_zero() && t_n.is_zero() && e_n.is_one()) {
return mk_zero_extend(t_sz - 1, lhs, result);
}
if (rhs_n.is_one() && t_n.is_zero() && e_n.is_one()) {
return mk_zero_extend(t_sz - 1, m_util.mk_bv_not(lhs), result);
}
}
}
}
}
}
return BR_FAILED;
}