Skip to content

Commit f015a95

Browse files
Use vector instead of list for get_value_set result
vectors are generally more efficient than list, unless we use concatenation or insertion which doesn't appear to be case here.
1 parent e4f5a3a commit f015a95

15 files changed

+28
-29
lines changed

src/goto-symex/postcondition.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,16 +160,13 @@ bool postconditiont::is_used(
160160
else if(expr.id()==ID_dereference)
161161
{
162162
// aliasing may happen here
163-
value_setst::valuest expr_set =
163+
std::vector<exprt> expr_set =
164164
value_set.get_value_set(to_dereference_expr(expr).pointer(), ns);
165165
std::unordered_set<irep_idt> symbols;
166166

167-
for(value_setst::valuest::const_iterator
168-
it=expr_set.begin();
169-
it!=expr_set.end();
170-
it++)
167+
for(const exprt &e : expr_set)
171168
{
172-
const exprt tmp = get_original_name(*it);
169+
const exprt tmp = get_original_name(e);
173170
find_symbols(tmp, symbols);
174171
}
175172

src/goto-symex/precondition.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,12 @@ void preconditiont::compute_rec(exprt &dest)
112112

113113
// aliasing may happen here
114114

115-
value_setst::valuest expr_set = value_sets.get_values(
115+
const std::vector<exprt> expr_set = value_sets.get_values(
116116
SSA_step.source.function_id, target, deref_expr.pointer());
117117
std::unordered_set<irep_idt> symbols;
118118

119-
for(value_setst::valuest::const_iterator
120-
it=expr_set.begin();
121-
it!=expr_set.end();
122-
it++)
123-
find_symbols(*it, symbols);
119+
for(const exprt &e : expr_set)
120+
find_symbols(e, symbols);
124121

125122
if(symbols.find(lhs_identifier)!=symbols.end())
126123
{

src/goto-symex/symex_dereference_state.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ void symex_dereference_statet::get_value_set(
105105
}
106106

107107
/// Just forwards a value-set query to `state.value_set`
108-
value_setst::valuest
108+
std::vector<exprt>
109109
symex_dereference_statet::get_value_set(const exprt &expr) const
110110
{
111111
return state.value_set.get_value_set(expr, ns);

src/goto-symex/symex_dereference_state.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class symex_dereference_statet:
3838
void get_value_set(const exprt &expr, value_setst::valuest &value_set)
3939
const override;
4040

41-
value_setst::valuest get_value_set(const exprt &expr) const override;
41+
std::vector<exprt> get_value_set(const exprt &expr) const override;
4242

4343
const symbolt *get_or_create_failed_symbol(const exprt &expr) override;
4444
};

src/pointer-analysis/dereference_callback.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class dereference_callbackt
3333
virtual void
3434
get_value_set(const exprt &expr, value_setst::valuest &value_set) const = 0;
3535

36-
virtual value_setst::valuest get_value_set(const exprt &expr) const = 0;
36+
virtual std::vector<exprt> get_value_set(const exprt &expr) const = 0;
3737

3838
virtual const symbolt *get_or_create_failed_symbol(const exprt &expr) = 0;
3939
};

src/pointer-analysis/goto_program_dereference.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ void goto_program_dereferencet::get_value_set(
151151
/// expression \p expr.
152152
/// \param expr: an expression
153153
/// \return the value set
154-
std::list<exprt>
154+
std::vector<exprt>
155155
goto_program_dereferencet::get_value_set(const exprt &expr) const
156156
{
157157
return value_sets.get_values(current_function, current_target, expr);

src/pointer-analysis/goto_program_dereference.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ class goto_program_dereferencet:protected dereference_callbackt
6565

6666
const symbolt *get_or_create_failed_symbol(const exprt &expr) override;
6767

68-
DEPRECATED(SINCE(2019, 05, 22, "use list returning version instead"))
68+
DEPRECATED(SINCE(2019, 05, 22, "use vector returning version instead"))
6969
void
7070
get_value_set(const exprt &expr, value_setst::valuest &dest) const override;
7171

72-
std::list<exprt> get_value_set(const exprt &expr) const override;
72+
std::vector<exprt> get_value_set(const exprt &expr) const override;
7373

7474
void dereference_instruction(
7575
goto_programt::targett target,

src/pointer-analysis/value_set.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ void value_sett::get_value_set(
370370
#endif
371371
}
372372

373-
std::list<exprt>
373+
std::vector<exprt>
374374
value_sett::get_value_set(exprt expr, const namespacet &ns) const
375375
{
376376
const object_mapt object_map = get_value_set(std::move(expr), ns, false);

src/pointer-analysis/value_set.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,8 @@ class value_sett
276276
/// \param expr: query expression
277277
/// \param ns: global namespace
278278
/// \return list of expressions that `expr` may point to
279-
std::list<exprt> get_value_set(exprt expr, const namespacet &ns) const;
279+
std::vector<exprt>
280+
get_value_set(exprt expr, const namespacet &ns) const;
280281

281282
/// Appears to be unimplemented.
282283
DEPRECATED(SINCE(2019, 05, 22, "Unimplemented"))

src/pointer-analysis/value_set_analysis.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class value_set_analysis_templatet:
7676
}
7777

7878
// interface value_sets
79-
std::list<exprt>
79+
std::vector<exprt>
8080
get_values(const irep_idt &, locationt l, const exprt &expr) override
8181
{
8282
return (*this)[l].value_set.get_value_set(expr, baset::ns);

0 commit comments

Comments
 (0)