Skip to content

Commit c8f6829

Browse files
author
Daniel Kroening
authored
Merge pull request #3104 from diffblue/bitwise_neg
remove bitwise_neg(mp_integer)
2 parents ec8b34d + d22e9b9 commit c8f6829

File tree

3 files changed

+3
-12
lines changed

3 files changed

+3
-12
lines changed

src/goto-programs/interpreter_evaluate.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,9 @@ void interpretert::evaluate(
528528
evaluate(expr.op0(), tmp);
529529
if(tmp.size()==1)
530530
{
531-
dest.push_back(bitwise_neg(tmp.front()));
531+
const auto width = to_bitvector_type(expr.op0().type()).get_width();
532+
const mp_integer mask = power(2, width) - 1;
533+
dest.push_back(bitwise_xor(tmp.front(), mask));
532534
return;
533535
}
534536
}

src/util/mp_arith.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -249,16 +249,6 @@ mp_integer bitwise_xor(const mp_integer &a, const mp_integer &b)
249249
return result;
250250
}
251251

252-
/// bitwise negation bitwise operations only make sense on native objects, hence
253-
/// the largest object size should be the largest available c++ integer size
254-
/// (currently long long)
255-
mp_integer bitwise_neg(const mp_integer &a)
256-
{
257-
PRECONDITION(a.is_ulong());
258-
ullong_t result=~a.to_ulong();
259-
return result;
260-
}
261-
262252
/// arithmetic left shift bitwise operations only make sense on native objects,
263253
/// hence the largest object size should be the largest available c++ integer
264254
/// size (currently long long)

src/util/mp_arith.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ mp_integer operator<<(const mp_integer &, const mp_integer &);
2727
mp_integer bitwise_or(const mp_integer &, const mp_integer &);
2828
mp_integer bitwise_and(const mp_integer &, const mp_integer &);
2929
mp_integer bitwise_xor(const mp_integer &, const mp_integer &);
30-
mp_integer bitwise_neg(const mp_integer &);
3130

3231
mp_integer arith_left_shift(
3332
const mp_integer &, const mp_integer &, std::size_t true_size);

0 commit comments

Comments
 (0)