Skip to content

Commit ebcac68

Browse files
committed
Factored out eval_operands helper function
1 parent 043b316 commit ebcac68

File tree

1 file changed

+29
-16
lines changed

1 file changed

+29
-16
lines changed

src/analyses/variable-sensitivity/abstract_enviroment.cpp

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
# include <iostream>
2828
#endif
2929

30+
std::vector<abstract_object_pointert> eval_operands(
31+
const exprt &expr,
32+
const abstract_environmentt &env,
33+
const namespacet &ns);
34+
3035
abstract_object_pointert
3136
abstract_environmentt::eval(const exprt &expr, const namespacet &ns) const
3237
{
@@ -56,14 +61,11 @@ abstract_environmentt::eval(const exprt &expr, const namespacet &ns) const
5661
auto access_expr = simplified_expr;
5762
auto target = eval(access_expr.operands()[0], ns);
5863

59-
std::vector<abstract_object_pointert> operands;
60-
61-
for(const auto &op : access_expr.operands())
62-
{
63-
operands.push_back(eval(op, ns));
64-
}
65-
66-
return target->expression_transform(access_expr, operands, *this, ns);
64+
return target->expression_transform(
65+
access_expr,
66+
eval_operands(access_expr, *this, ns),
67+
*this,
68+
ns);
6769
}
6870
else if(simplified_id == ID_address_of)
6971
{
@@ -428,14 +430,11 @@ abstract_object_pointert abstract_environmentt::eval_expression(
428430
abstract_object_pointert eval_obj =
429431
abstract_object_factory(e.type(), ns, true);
430432

431-
std::vector<abstract_object_pointert> operands;
432-
433-
for(const auto &op : e.operands())
434-
{
435-
operands.push_back(eval(op, ns));
436-
}
437-
438-
return eval_obj->expression_transform(e, operands, *this, ns);
433+
return eval_obj->expression_transform(
434+
e,
435+
eval_operands(e, *this, ns),
436+
*this,
437+
ns);
439438
}
440439

441440
void abstract_environmentt::erase(const symbol_exprt &expr)
@@ -507,3 +506,17 @@ abstract_environmentt::gather_statistics(const namespacet &ns) const
507506
}
508507
return statistics;
509508
}
509+
510+
std::vector<abstract_object_pointert> eval_operands(
511+
const exprt &expr,
512+
const abstract_environmentt &env,
513+
const namespacet &ns)
514+
{
515+
std::vector<abstract_object_pointert> operands;
516+
517+
for(const auto &op : expr.operands())
518+
operands.push_back(env.eval(op, ns));
519+
520+
return operands;
521+
}
522+

0 commit comments

Comments
 (0)