File tree 1 file changed +9
-14
lines changed 1 file changed +9
-14
lines changed Original file line number Diff line number Diff line change @@ -119,12 +119,16 @@ static bool mul_expr(
119
119
120
120
const irep_idt &type_id=dest.type ().id ();
121
121
122
- if (type_id==ID_integer || type_id==ID_natural)
122
+ if (
123
+ type_id == ID_integer || type_id == ID_natural ||
124
+ type_id == ID_unsignedbv || type_id == ID_signedbv)
123
125
{
124
- dest.set_value (integer2string (
125
- string2integer (id2string (dest.get_value ()))*
126
- string2integer (id2string (expr.get_value ()))));
127
- return false ;
126
+ mp_integer a, b;
127
+ if (!to_integer (dest, a) && !to_integer (expr, b))
128
+ {
129
+ dest = from_integer (a * b, dest.type ());
130
+ return false ;
131
+ }
128
132
}
129
133
else if (type_id==ID_rational)
130
134
{
@@ -135,15 +139,6 @@ static bool mul_expr(
135
139
return false ;
136
140
}
137
141
}
138
- else if (type_id==ID_unsignedbv || type_id==ID_signedbv)
139
- {
140
- // the following works for signed and unsigned integers
141
- dest.set_value (integer2binary (
142
- binary2integer (id2string (dest.get_value ()), false )*
143
- binary2integer (id2string (expr.get_value ()), false ),
144
- to_bitvector_type (dest.type ()).get_width ()));
145
- return false ;
146
- }
147
142
else if (type_id==ID_fixedbv)
148
143
{
149
144
fixedbvt f (to_constant_expr (dest));
You can’t perform that action at this time.
0 commit comments