17
17
18
18
literalt boolbvt::convert_extractbit (const extractbit_exprt &expr)
19
19
{
20
- const exprt::operandst &operands=expr.operands ();
21
-
22
- if (operands.size ()!=2 )
23
- throw " extractbit takes two operands" ;
24
-
25
- const bvt &bv0=convert_bv (operands[0 ]);
20
+ const bvt &bv0 = convert_bv (expr.src ());
26
21
27
22
// constant?
28
- if (operands[ 1 ] .is_constant ())
23
+ if (expr. index () .is_constant ())
29
24
{
30
25
mp_integer o;
31
26
32
- if (to_integer (operands[ 1 ] , o))
27
+ if (to_integer (expr. index () , o))
33
28
throw " extractbit failed to convert constant index" ;
34
29
35
30
if (o<0 || o>=bv0.size ())
@@ -38,16 +33,17 @@ literalt boolbvt::convert_extractbit(const extractbit_exprt &expr)
38
33
return bv0[integer2size_t (o)];
39
34
}
40
35
41
- if (operands[0 ].type ().id ()==ID_verilog_signedbv ||
42
- operands[0 ].type ().id ()==ID_verilog_unsignedbv)
36
+ if (
37
+ expr.src ().type ().id () == ID_verilog_signedbv ||
38
+ expr.src ().type ().id () == ID_verilog_unsignedbv)
43
39
{
44
40
// TODO
45
41
assert (false );
46
42
}
47
43
else
48
44
{
49
- std::size_t width_op0= boolbv_width (operands[ 0 ] .type ());
50
- std::size_t width_op1= boolbv_width (operands[ 1 ] .type ());
45
+ std::size_t width_op0 = boolbv_width (expr. src () .type ());
46
+ std::size_t width_op1 = boolbv_width (expr. index () .type ());
51
47
52
48
if (width_op0==0 || width_op1==0 )
53
49
return SUB::convert_rest (expr);
@@ -56,7 +52,7 @@ literalt boolbvt::convert_extractbit(const extractbit_exprt &expr)
56
52
unsignedbv_typet index_type (index_width);
57
53
58
54
equal_exprt equality;
59
- equality.lhs ()=operands[ 1 ] ; // index operand
55
+ equality.lhs () = expr. index () ; // index operand
60
56
61
57
if (index_type!=equality.lhs ().type ())
62
58
equality.lhs ().make_typecast (index_type);
0 commit comments