Skip to content

Commit d1a4c13

Browse files
authored
Merge pull request #3344 from tautschnig/vs-cleanup-deref
Cleanup value_set_dereferencet's internal API [blocks: #2310]
2 parents d532cc4 + 71d6013 commit d1a4c13

File tree

2 files changed

+16
-41
lines changed

2 files changed

+16
-41
lines changed

src/pointer-analysis/value_set_dereference.cpp

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -75,22 +75,22 @@ exprt value_set_dereferencet::dereference(
7575
// type of the object
7676
const typet &type=pointer.type().subtype();
7777

78-
#if 0
78+
#if 0
7979
std::cout << "DEREF: " << format(pointer) << '\n';
80-
#endif
80+
#endif
8181

8282
// collect objects the pointer may point to
8383
value_setst::valuest points_to_set;
8484

8585
dereference_callback.get_value_set(pointer, points_to_set);
8686

87-
#if 0
87+
#if 0
8888
for(value_setst::valuest::const_iterator
8989
it=points_to_set.begin();
9090
it!=points_to_set.end();
9191
it++)
9292
std::cout << "P: " << format(*it) << '\n';
93-
#endif
93+
#endif
9494

9595
// get the values of these
9696

@@ -101,15 +101,15 @@ exprt value_set_dereferencet::dereference(
101101
it!=points_to_set.end();
102102
it++)
103103
{
104-
valuet value=build_reference_to(*it, mode, pointer, guard);
104+
valuet value = build_reference_to(*it, pointer);
105105

106-
#if 0
106+
#if 0
107107
std::cout << "V: " << format(value.pointer_guard) << " --> ";
108108
std::cout << format(value.value);
109109
if(value.ignore)
110110
std::cout << " (ignored)";
111111
std::cout << '\n';
112-
#endif
112+
#endif
113113

114114
if(!value.ignore)
115115
values.push_back(value);
@@ -270,9 +270,7 @@ bool value_set_dereferencet::dereference_type_compare(
270270

271271
value_set_dereferencet::valuet value_set_dereferencet::build_reference_to(
272272
const exprt &what,
273-
const modet mode,
274-
const exprt &pointer_expr,
275-
const guardt &guard)
273+
const exprt &pointer_expr)
276274
{
277275
const typet &dereference_type=
278276
ns.follow(pointer_expr.type()).subtype();
@@ -397,9 +395,6 @@ value_set_dereferencet::valuet value_set_dereferencet::build_reference_to(
397395
result.pointer_guard=same_object(pointer_expr, object_pointer);
398396
}
399397

400-
guardt tmp_guard(guard);
401-
tmp_guard.add(result.pointer_guard);
402-
403398
const typet &object_type=ns.follow(object.type());
404399
const typet &root_object_type=ns.follow(root_object.type());
405400

@@ -491,7 +486,7 @@ value_set_dereferencet::valuet value_set_dereferencet::build_reference_to(
491486
else
492487
offset=o.offset();
493488

494-
if(memory_model(result.value, dereference_type, tmp_guard, offset))
489+
if(memory_model(result.value, dereference_type, offset))
495490
{
496491
// ok, done
497492
}
@@ -518,7 +513,6 @@ static bool is_a_bv_type(const typet &type)
518513
bool value_set_dereferencet::memory_model(
519514
exprt &value,
520515
const typet &to_type,
521-
const guardt &guard,
522516
const exprt &offset)
523517
{
524518
// we will allow more or less arbitrary pointer type cast
@@ -542,7 +536,7 @@ bool value_set_dereferencet::memory_model(
542536
{
543537
}
544538
else
545-
return memory_model_conversion(value, to_type, guard, offset);
539+
return memory_model_conversion(value, to_type);
546540
}
547541
}
548542

@@ -552,19 +546,17 @@ bool value_set_dereferencet::memory_model(
552546
to_type.id()==ID_pointer)
553547
{
554548
if(pointer_offset_bits(from_type, ns) == pointer_offset_bits(to_type, ns))
555-
return memory_model_conversion(value, to_type, guard, offset);
549+
return memory_model_conversion(value, to_type);
556550
}
557551

558552
// otherwise, we will stitch it together from bytes
559553

560-
return memory_model_bytes(value, to_type, guard, offset);
554+
return memory_model_bytes(value, to_type, offset);
561555
}
562556

563557
bool value_set_dereferencet::memory_model_conversion(
564558
exprt &value,
565-
const typet &to_type,
566-
const guardt &guard,
567-
const exprt &offset)
559+
const typet &to_type)
568560
{
569561
// only doing type conversion
570562
// just do the typecast
@@ -575,7 +567,6 @@ bool value_set_dereferencet::memory_model_conversion(
575567
bool value_set_dereferencet::memory_model_bytes(
576568
exprt &value,
577569
const typet &to_type,
578-
const guardt &guard,
579570
const exprt &offset)
580571
{
581572
const typet from_type=value.type();

src/pointer-analysis/value_set_dereference.h

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,7 @@ class value_set_dereferencet
113113
/// \param what: value set entry to convert to an expression: either
114114
/// ID_unknown, ID_invalid, or an object_descriptor_exprt giving a referred
115115
/// object and offset.
116-
/// \param mode: whether the pointer is being read or written; used to create
117-
/// pointer validity checks if need be
118116
/// \param pointer: pointer expression that may point to `what`
119-
/// \param guard: guard under which the pointer is dereferenced
120117
/// \return
121118
/// * If we were explicitly instructed to ignore `what` as a possible
122119
/// pointer target: a `valuet` with `ignore` = true, and `value` and
@@ -128,11 +125,7 @@ class value_set_dereferencet
128125
/// `{.value = global, .pointer_guard = (pointer_expr == &global)}`
129126
/// * Otherwise, if we couldn't build an expression (e.g. for `what` ==
130127
/// ID_unknown), a `valuet` with nil `value` and `ignore` == false.
131-
valuet build_reference_to(
132-
const exprt &what,
133-
const modet mode,
134-
const exprt &pointer,
135-
const guardt &guard);
128+
valuet build_reference_to(const exprt &what, const exprt &pointer);
136129

137130
bool get_value_guard(
138131
const exprt &symbol,
@@ -141,22 +134,13 @@ class value_set_dereferencet
141134

142135
static const exprt &get_symbol(const exprt &object);
143136

144-
bool memory_model(
145-
exprt &value,
146-
const typet &type,
147-
const guardt &guard,
148-
const exprt &offset);
137+
bool memory_model(exprt &value, const typet &type, const exprt &offset);
149138

150-
bool memory_model_conversion(
151-
exprt &value,
152-
const typet &type,
153-
const guardt &guard,
154-
const exprt &offset);
139+
bool memory_model_conversion(exprt &value, const typet &type);
155140

156141
bool memory_model_bytes(
157142
exprt &value,
158143
const typet &type,
159-
const guardt &guard,
160144
const exprt &offset);
161145
};
162146

0 commit comments

Comments
 (0)