@@ -298,8 +298,7 @@ void interpretert::step()
298
298
299
299
if (call_stack.top ().return_value_address != 0 )
300
300
{
301
- mp_vectort rhs;
302
- evaluate (pc->return_value (), rhs);
301
+ mp_vectort rhs = evaluate (pc->return_value ());
303
302
assign (call_stack.top ().return_value_address , rhs);
304
303
}
305
304
@@ -390,15 +389,14 @@ void interpretert::execute_other()
390
389
DATA_INVARIANT (
391
390
pc->get_code ().operands ().size () == 1 ,
392
391
" expression statement expected to have one operand" );
393
- mp_vectort rhs;
394
- evaluate (pc->get_code ().op0 (), rhs);
392
+ mp_vectort rhs = evaluate (pc->get_code ().op0 ());
395
393
}
396
394
else if (statement==ID_array_set)
397
395
{
398
- mp_vectort tmp, rhs;
399
- evaluate (pc->get_code ().op1 (), tmp);
396
+ mp_vectort tmp = evaluate (pc->get_code ().op1 ());
400
397
mp_integer address = evaluate_address (pc->get_code ().op0 ());
401
398
mp_integer size = get_size (pc->get_code ().op0 ().type ());
399
+ mp_vectort rhs;
402
400
while (rhs.size ()<size) rhs.insert (rhs.end (), tmp.begin (), tmp.end ());
403
401
if (size!=rhs.size ())
404
402
output.error () << " !! failed to obtain rhs (" << rhs.size () << " vs. "
@@ -656,8 +654,7 @@ void interpretert::execute_assign()
656
654
const exprt &assign_lhs = pc->assign_lhs ();
657
655
const exprt &assign_rhs = pc->assign_rhs ();
658
656
659
- mp_vectort rhs;
660
- evaluate (assign_rhs, rhs);
657
+ mp_vectort rhs = evaluate (assign_rhs);
661
658
662
659
if (!rhs.empty ())
663
660
{
@@ -780,7 +777,7 @@ void interpretert::execute_function_call()
780
777
argument_values.resize (call_arguments.size ());
781
778
782
779
for (std::size_t i = 0 ; i < call_arguments.size (); i++)
783
- evaluate (call_arguments [i], argument_values [i]);
780
+ argument_values [i] = evaluate (call_arguments [i]);
784
781
785
782
// do the call
786
783
@@ -827,10 +824,10 @@ void interpretert::execute_function_call()
827
824
828
825
if (it!=function_input_vars.end ())
829
826
{
830
- mp_vectort value;
831
827
PRECONDITION (!it->second .empty ());
832
828
PRECONDITION (!it->second .front ().return_assignments .empty ());
833
- evaluate (it->second .front ().return_assignments .back ().value , value);
829
+ mp_vectort value =
830
+ evaluate (it->second .front ().return_assignments .back ().value );
834
831
if (return_value_address>0 )
835
832
{
836
833
assign (return_value_address, value);
@@ -891,8 +888,7 @@ typet interpretert::concretize_type(const typet &type)
891
888
if (type.id ()==ID_array)
892
889
{
893
890
const exprt &size_expr=static_cast <const exprt &>(type.find (ID_size));
894
- mp_vectort computed_size;
895
- evaluate (size_expr, computed_size);
891
+ mp_vectort computed_size = evaluate (size_expr);
896
892
if (computed_size.size ()==1 &&
897
893
computed_size[0 ]>=0 )
898
894
{
@@ -1013,8 +1009,7 @@ mp_integer interpretert::get_size(const typet &type)
1013
1009
1014
1010
mp_integer subtype_size=get_size (type.subtype ());
1015
1011
1016
- mp_vectort i;
1017
- evaluate (size_expr, i);
1012
+ mp_vectort i = evaluate (size_expr);
1018
1013
if (i.size ()==1 )
1019
1014
{
1020
1015
// Go via the binary representation to reproduce any
0 commit comments