File tree Expand file tree Collapse file tree 5 files changed +8
-16
lines changed Expand file tree Collapse file tree 5 files changed +8
-16
lines changed Original file line number Diff line number Diff line change @@ -224,9 +224,8 @@ bvt boolbvt::convert_bitvector(const exprt &expr)
224
224
expr.id ()==" no-overflow-plus" ||
225
225
expr.id ()==" no-overflow-minus" )
226
226
return convert_add_sub (expr);
227
- else if (expr.id ()==ID_mult ||
228
- expr.id ()==" no-overflow-mult" )
229
- return convert_mult (expr);
227
+ else if (expr.id () == ID_mult)
228
+ return convert_mult (to_mult_expr (expr));
230
229
else if (expr.id ()==ID_div)
231
230
return convert_div (to_div_expr (expr));
232
231
else if (expr.id ()==ID_mod)
Original file line number Diff line number Diff line change @@ -152,7 +152,7 @@ class boolbvt:public arrayst
152
152
virtual bvt convert_union (const union_exprt &expr);
153
153
virtual bvt convert_bv_typecast (const typecast_exprt &expr);
154
154
virtual bvt convert_add_sub (const exprt &expr);
155
- virtual bvt convert_mult (const exprt &expr);
155
+ virtual bvt convert_mult (const mult_exprt &expr);
156
156
virtual bvt convert_div (const div_exprt &expr);
157
157
virtual bvt convert_mod (const mod_exprt &expr);
158
158
virtual bvt convert_floatbv_op (const exprt &expr);
Original file line number Diff line number Diff line change 10
10
11
11
#include < util/std_types.h>
12
12
13
- bvt boolbvt::convert_mult (const exprt &expr)
13
+ bvt boolbvt::convert_mult (const mult_exprt &expr)
14
14
{
15
- PRECONDITION (expr.id () == ID_mult || expr.id () == " no-overflow-mult" );
16
-
17
15
std::size_t width=boolbv_width (expr.type ());
18
16
19
17
if (width==0 )
@@ -27,8 +25,6 @@ bvt boolbvt::convert_mult(const exprt &expr)
27
25
28
26
const exprt &op0=expr.op0 ();
29
27
30
- bool no_overflow=expr.id ()==" no-overflow-mult" ;
31
-
32
28
DATA_INVARIANT (
33
29
op0.type () == expr.type (),
34
30
" multiplication operands should have same type as expression" );
@@ -80,10 +76,7 @@ bvt boolbvt::convert_mult(const exprt &expr)
80
76
81
77
const bvt &op = convert_bv (*it, width);
82
78
83
- if (no_overflow)
84
- bv=bv_utils.multiplier_no_overflow (bv, op, rep);
85
- else
86
- bv=bv_utils.multiplier (bv, op, rep);
79
+ bv = bv_utils.multiplier (bv, op, rep);
87
80
}
88
81
89
82
return bv;
Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ class bv_refinementt:public bv_pointerst
51
51
void post_process_arrays () override ;
52
52
53
53
// Refine arithmetic
54
- bvt convert_mult (const exprt &expr) override ;
54
+ bvt convert_mult (const mult_exprt &expr) override ;
55
55
bvt convert_div (const div_exprt &expr) override ;
56
56
bvt convert_mod (const mod_exprt &expr) override ;
57
57
bvt convert_floatbv_op (const exprt &expr) override ;
Original file line number Diff line number Diff line change @@ -50,7 +50,7 @@ bvt bv_refinementt::convert_floatbv_op(const exprt &expr)
50
50
return bv;
51
51
}
52
52
53
- bvt bv_refinementt::convert_mult (const exprt &expr)
53
+ bvt bv_refinementt::convert_mult (const mult_exprt &expr)
54
54
{
55
55
if (!config_.refine_arithmetic || expr.type ().id ()==ID_fixedbv)
56
56
return SUB::convert_mult (expr);
@@ -65,7 +65,7 @@ bvt bv_refinementt::convert_mult(const exprt &expr)
65
65
PRECONDITION (operands.size ()>=2 );
66
66
67
67
if (operands.size ()>2 )
68
- return convert_mult (make_binary (expr)); // make binary
68
+ return convert_mult (to_mult_expr ( make_binary (expr) )); // make binary
69
69
70
70
// we keep multiplication by a constant for integers
71
71
if (type.id ()!=ID_floatbv)
You can’t perform that action at this time.
0 commit comments