diff --git a/src/solvers/flattening/boolbv_div.cpp b/src/solvers/flattening/boolbv_div.cpp index 4d4d1c514af..a1739488aab 100644 --- a/src/solvers/flattening/boolbv_div.cpp +++ b/src/solvers/flattening/boolbv_div.cpp @@ -37,8 +37,7 @@ bvt boolbvt::convert_div(const div_exprt &expr) std::size_t fraction_bits= to_fixedbv_type(expr.type()).get_fraction_bits(); - bvt zeros; - zeros.resize(fraction_bits, const_literal(false)); + bvt zeros = bv_utils.zeros(fraction_bits); // add fraction_bits least-significant bits op0.insert(op0.begin(), zeros.begin(), zeros.end()); diff --git a/src/solvers/flattening/bv_utils.cpp b/src/solvers/flattening/bv_utils.cpp index 0b163b153df..425f2ba40e1 100644 --- a/src/solvers/flattening/bv_utils.cpp +++ b/src/solvers/flattening/bv_utils.cpp @@ -615,10 +615,10 @@ literalt bv_utilst::overflow_negate(const bvt &bv) // a overflow on unary- can only happen with the smallest // representable number 100....0 - bvt zeros(bv); - zeros.erase(--zeros.end()); + bvt should_be_zeros(bv); + should_be_zeros.pop_back(); - return prop.land(bv[bv.size()-1], !prop.lor(zeros)); + return prop.land(bv[bv.size() - 1], !prop.lor(should_be_zeros)); } void bv_utilst::incrementer( @@ -715,13 +715,9 @@ bvt bv_utilst::unsigned_multiplier(const bvt &_op0, const bvt &_op1) for(std::size_t sum=0; sum