File tree 1 file changed +7
-4
lines changed
1 file changed +7
-4
lines changed Original file line number Diff line number Diff line change @@ -24,16 +24,19 @@ bvt boolbvt::convert_extractbits(const extractbits_exprt &expr)
24
24
throw 0 ;
25
25
}
26
26
27
- mp_integer upper_as_int, lower_as_int;
28
27
auto const &src_bv = convert_bv (expr.src ());
29
28
29
+ auto const maybe_upper_as_int = numeric_cast<mp_integer>(expr.upper ());
30
+ auto const maybe_lower_as_int = numeric_cast<mp_integer>(expr.lower ());
31
+
30
32
// We only do constants for now.
31
33
// Should implement a shift here.
32
- if (
33
- to_integer (expr.op1 (), upper_as_int) ||
34
- to_integer (expr.op2 (), lower_as_int))
34
+ if (!maybe_upper_as_int.has_value () || !maybe_lower_as_int.has_value ())
35
35
return conversion_failed (expr);
36
36
37
+ auto upper_as_int = maybe_upper_as_int.value ();
38
+ auto lower_as_int = maybe_lower_as_int.value ();
39
+
37
40
if (upper_as_int < 0 || upper_as_int >= src_bv.size ())
38
41
{
39
42
error ().source_location =expr.find_source_location ();
You can’t perform that action at this time.
0 commit comments