Skip to content

Commit 6f2f117

Browse files
committed
Remove duplication in ptr_comparison_expr
1 parent 7266f95 commit 6f2f117

File tree

4 files changed

+22
-17
lines changed

4 files changed

+22
-17
lines changed

src/analyses/variable-sensitivity/abstract_pointer_object.cpp

+17-1
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,26 @@ abstract_object_pointert abstract_pointer_objectt::eval_ptr_comparison(
116116
const abstract_environmentt &environment,
117117
const namespacet &ns) const
118118
{
119-
auto result = ptr_comparison_expr(expr, operands, environment, ns);
119+
auto result = eval_ptr_comparison_as_expr(expr, operands, environment, ns);
120120
return environment.eval(result, ns);
121121
}
122122

123+
exprt abstract_pointer_objectt::eval_ptr_comparison_as_expr(
124+
const exprt &expr,
125+
const std::vector<abstract_object_pointert> &operands,
126+
const abstract_environmentt &environment,
127+
const namespacet &ns) const
128+
{
129+
if(expr.id() == ID_not)
130+
{
131+
auto const &not_expr = to_not_expr(expr);
132+
auto result = simplify_vsd_expr(
133+
ptr_comparison_expr(not_expr.op(), operands, environment, ns), ns);
134+
return invert_result(result);
135+
}
136+
return ptr_comparison_expr(expr, operands, environment, ns);
137+
}
138+
123139
static bool is_dereference(const exprt &expr)
124140
{
125141
return expr.id() == ID_dereference;

src/analyses/variable-sensitivity/abstract_pointer_object.h

+5
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ class abstract_pointer_objectt : public abstract_objectt,
129129
const std::vector<abstract_object_pointert> &operands,
130130
const abstract_environmentt &environment,
131131
const namespacet &ns) const;
132+
exprt eval_ptr_comparison_as_expr(
133+
const exprt &expr,
134+
const std::vector<abstract_object_pointert> &operands,
135+
const abstract_environmentt &environment,
136+
const namespacet &ns) const;
132137
};
133138

134139
#endif // CPROVER_ANALYSES_VARIABLE_SENSITIVITY_ABSTRACT_POINTER_OBJECT_H

src/analyses/variable-sensitivity/constant_pointer_abstract_object.cpp

-8
Original file line numberDiff line numberDiff line change
@@ -361,14 +361,6 @@ exprt constant_pointer_abstract_objectt::ptr_comparison_expr(
361361
const abstract_environmentt &environment,
362362
const namespacet &ns) const
363363
{
364-
if(expr.id() == ID_not)
365-
{
366-
auto const &not_expr = to_not_expr(expr);
367-
auto result = simplify_vsd_expr(
368-
ptr_comparison_expr(not_expr.op(), operands, environment, ns), ns);
369-
return invert_result(result);
370-
}
371-
372364
auto rhs = std::dynamic_pointer_cast<const constant_pointer_abstract_objectt>(
373365
operands.back());
374366

src/analyses/variable-sensitivity/value_set_pointer_abstract_object.cpp

-8
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,6 @@ exprt value_set_pointer_abstract_objectt::ptr_comparison_expr(
166166
const abstract_environmentt &environment,
167167
const namespacet &ns) const
168168
{
169-
if(expr.id() == ID_not)
170-
{
171-
auto const &not_expr = to_not_expr(expr);
172-
auto result = simplify_vsd_expr(
173-
ptr_comparison_expr(not_expr.op(), operands, environment, ns), ns);
174-
return invert_result(result);
175-
}
176-
177169
auto rhs =
178170
std::dynamic_pointer_cast<const value_set_pointer_abstract_objectt>(
179171
operands.back());

0 commit comments

Comments
 (0)