Skip to content

Commit 055a475

Browse files
committed
We never call write on an abstract_value_objectt.
Consequently we can remove value_set_abstract_objectt::write and value_set_*::resolve_new_values. Added UNREACHABLE assertion in abstract_value_objectt::write should this every change (deliverately or otherwise).
1 parent 494e9d3 commit 055a475

File tree

6 files changed

+19
-64
lines changed

6 files changed

+19
-64
lines changed

src/analyses/variable-sensitivity/abstract_value_object.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,17 @@ abstract_object_pointert abstract_value_objectt::expression_transform(
177177
return environment.add_object_context(result);
178178
}
179179

180+
abstract_object_pointert abstract_value_objectt::write(
181+
abstract_environmentt &environment,
182+
const namespacet &ns,
183+
const std::stack<exprt> &stack,
184+
const exprt &specifier,
185+
const abstract_object_pointert &value,
186+
bool merging_write) const
187+
{
188+
UNREACHABLE; // Should not ever call write on a value;
189+
}
190+
180191
abstract_object_pointert abstract_value_objectt::merge(
181192
const abstract_object_pointert &other,
182193
const wident &widen_mode) const

src/analyses/variable-sensitivity/abstract_value_object.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,14 @@ class abstract_value_objectt : public abstract_objectt,
286286
const abstract_environmentt &environment,
287287
const namespacet &ns) const final;
288288

289+
abstract_object_pointert write(
290+
abstract_environmentt &environment,
291+
const namespacet &ns,
292+
const std::stack<exprt> &stack,
293+
const exprt &specifier,
294+
const abstract_object_pointert &value,
295+
bool merging_write) const final;
296+
289297
protected:
290298
using abstract_value_pointert = sharing_ptrt<const abstract_value_objectt>;
291299

src/analyses/variable-sensitivity/value_set_abstract_object.cpp

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -182,23 +182,6 @@ constant_interval_exprt value_set_abstract_objectt::to_interval() const
182182
return values.to_interval();
183183
}
184184

185-
abstract_object_pointert value_set_abstract_objectt::write(
186-
abstract_environmentt &environment,
187-
const namespacet &ns,
188-
const std::stack<exprt> &stack,
189-
const exprt &specifier,
190-
const abstract_object_pointert &value,
191-
bool merging_write) const
192-
{
193-
abstract_object_sett new_values;
194-
for(const auto &st_value : values)
195-
{
196-
new_values.insert(
197-
st_value->write(environment, ns, stack, specifier, value, merging_write));
198-
}
199-
return resolve_new_values(new_values, environment);
200-
}
201-
202185
abstract_object_pointert value_set_abstract_objectt::merge_with_value(
203186
const abstract_value_pointert &other,
204187
const wident &widen_mode) const
@@ -252,14 +235,6 @@ abstract_object_pointert value_set_abstract_objectt::meet_with_value(
252235
return resolve_values(meet_values);
253236
}
254237

255-
abstract_object_pointert value_set_abstract_objectt::resolve_new_values(
256-
const abstract_object_sett &new_values,
257-
const abstract_environmentt &environment) const
258-
{
259-
auto result = resolve_values(new_values);
260-
return environment.add_object_context(result);
261-
}
262-
263238
abstract_object_pointert value_set_abstract_objectt::resolve_values(
264239
const abstract_object_sett &new_values) const
265240
{

src/analyses/variable-sensitivity/value_set_abstract_object.h

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,6 @@ class value_set_abstract_objectt : public abstract_value_objectt,
5454
/// either converted to interval or marked as `top`.
5555
static const size_t max_value_set_size = 10;
5656

57-
/// \copydoc abstract_objectt::write
58-
///
59-
/// Delegate writing to stored values.
60-
abstract_object_pointert write(
61-
abstract_environmentt &environment,
62-
const namespacet &ns,
63-
const std::stack<exprt> &stack,
64-
const exprt &specifier,
65-
const abstract_object_pointert &value,
66-
bool merging_write) const override;
67-
6857
void output(std::ostream &out, const ai_baset &ai, const namespacet &ns)
6958
const override;
7059

@@ -79,16 +68,6 @@ class value_set_abstract_objectt : public abstract_value_objectt,
7968
meet_with_value(const abstract_value_pointert &other) const override;
8069

8170
private:
82-
/// Update the set of stored values to \p new_values. Build a new abstract
83-
/// object of the right type if necessary.
84-
/// \param new_values: potentially new set of values
85-
/// \param environment: the abstract environment
86-
/// \return the abstract object representing \p new_values (either 'this' or
87-
/// something new)
88-
abstract_object_pointert resolve_new_values(
89-
const abstract_object_sett &new_values,
90-
const abstract_environmentt &environment) const;
91-
9271
/// Update the set of stored values to \p new_values. Build a new abstract
9372
/// object of the right type if necessary.
9473
/// \param new_values: potentially new set of values

src/analyses/variable-sensitivity/value_set_pointer_abstract_object.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,14 +139,6 @@ abstract_object_pointert value_set_pointer_abstract_objectt::write_dereference(
139139
return shared_from_this();
140140
}
141141

142-
abstract_object_pointert value_set_pointer_abstract_objectt::resolve_new_values(
143-
const abstract_object_sett &new_values,
144-
const abstract_environmentt &environment) const
145-
{
146-
auto result = resolve_values(new_values);
147-
return environment.add_object_context(result);
148-
}
149-
150142
abstract_object_pointert value_set_pointer_abstract_objectt::resolve_values(
151143
const abstract_object_sett &new_values) const
152144
{

src/analyses/variable-sensitivity/value_set_pointer_abstract_object.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,6 @@ class value_set_pointer_abstract_objectt : public abstract_pointer_objectt,
7676
const wident &widen_mode) const override;
7777

7878
private:
79-
/// Update the set of stored values to \p new_values. Build a new abstract
80-
/// object of the right type if necessary.
81-
/// \param new_values: potentially new set of values
82-
/// \param environment: the abstract environment
83-
/// \return the abstract object representing \p new_values (either 'this' or
84-
/// something new)
85-
abstract_object_pointert resolve_new_values(
86-
const abstract_object_sett &new_values,
87-
const abstract_environmentt &environment) const;
88-
8979
/// Update the set of stored values to \p new_values. Build a new abstract
9080
/// object of the right type if necessary.
9181
/// \param new_values: potentially new set of values

0 commit comments

Comments
 (0)