Skip to content

Commit ccf528e

Browse files
committed
Remove unnecessary use of ns.follow from pointer predicates
This also makes the namespace unnecessary in three cases.
1 parent 02744e6 commit ccf528e

File tree

3 files changed

+24
-42
lines changed

3 files changed

+24
-42
lines changed

src/analyses/goto_check.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1173,7 +1173,7 @@ goto_checkt::address_check(const exprt &address, const exprt &size)
11731173
if(flags.is_unknown() || flags.is_dynamic_heap())
11741174
{
11751175
const or_exprt dynamic_bounds_violation(
1176-
dynamic_object_lower_bound(address, ns, nil_exprt()),
1176+
dynamic_object_lower_bound(address, nil_exprt()),
11771177
dynamic_object_upper_bound(address, ns, size));
11781178

11791179
conditions.push_back(conditiont(
@@ -1189,8 +1189,8 @@ goto_checkt::address_check(const exprt &address, const exprt &size)
11891189
flags.is_static_lifetime())
11901190
{
11911191
const or_exprt object_bounds_violation(
1192-
object_lower_bound(address, ns, nil_exprt()),
1193-
object_upper_bound(address, ns, size));
1192+
object_lower_bound(address, nil_exprt()),
1193+
object_upper_bound(address, size));
11941194

11951195
conditions.push_back(conditiont(
11961196
or_exprt(

src/util/pointer_predicates.cpp

+21-36
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,15 @@ exprt good_pointer_def(
8484
const exprt &pointer,
8585
const namespacet &ns)
8686
{
87-
const pointer_typet &pointer_type=to_pointer_type(ns.follow(pointer.type()));
87+
const pointer_typet &pointer_type = to_pointer_type(pointer.type());
8888
const typet &dereference_type=pointer_type.subtype();
8989

9090
const or_exprt good_dynamic_tmp1(
9191
not_exprt(malloc_object(pointer, ns)),
9292
and_exprt(
93-
not_exprt(dynamic_object_lower_bound(pointer, ns, nil_exprt())),
94-
not_exprt(
95-
dynamic_object_upper_bound(
96-
pointer, ns, size_of_expr(dereference_type, ns)))));
93+
not_exprt(dynamic_object_lower_bound(pointer, nil_exprt())),
94+
not_exprt(dynamic_object_upper_bound(
95+
pointer, ns, size_of_expr(dereference_type, ns)))));
9796

9897
const and_exprt good_dynamic_tmp2(
9998
not_exprt(deallocated(pointer, ns)), good_dynamic_tmp1);
@@ -106,9 +105,8 @@ exprt good_pointer_def(
106105
const not_exprt not_invalid(invalid_pointer(pointer));
107106

108107
const or_exprt bad_other(
109-
object_lower_bound(pointer, ns, nil_exprt()),
110-
object_upper_bound(
111-
pointer, ns, size_of_expr(dereference_type, ns)));
108+
object_lower_bound(pointer, nil_exprt()),
109+
object_upper_bound(pointer, size_of_expr(dereference_type, ns)));
112110

113111
const or_exprt good_other(dynamic_object(pointer), not_exprt(bad_other));
114112

@@ -145,10 +143,9 @@ exprt invalid_pointer(const exprt &pointer)
145143

146144
exprt dynamic_object_lower_bound(
147145
const exprt &pointer,
148-
const namespacet &ns,
149146
const exprt &offset)
150147
{
151-
return object_lower_bound(pointer, ns, offset);
148+
return object_lower_bound(pointer, offset);
152149
}
153150

154151
exprt dynamic_object_upper_bound(
@@ -171,22 +168,17 @@ exprt dynamic_object_upper_bound(
171168
{
172169
op=ID_gt;
173170

174-
if(ns.follow(object_offset.type())!=
175-
ns.follow(access_size.type()))
176-
object_offset.make_typecast(access_size.type());
177-
sum=plus_exprt(object_offset, access_size);
171+
sum = plus_exprt(
172+
typecast_exprt::conditional_cast(object_offset, access_size.type()),
173+
access_size);
178174
}
179175

180-
if(ns.follow(sum.type())!=
181-
ns.follow(malloc_size.type()))
182-
sum.make_typecast(malloc_size.type());
183-
184-
return binary_relation_exprt(sum, op, malloc_size);
176+
return binary_relation_exprt(
177+
typecast_exprt::conditional_cast(sum, malloc_size.type()), op, malloc_size);
185178
}
186179

187180
exprt object_upper_bound(
188181
const exprt &pointer,
189-
const namespacet &ns,
190182
const exprt &access_size)
191183
{
192184
// this is
@@ -204,23 +196,19 @@ exprt object_upper_bound(
204196
{
205197
op=ID_gt;
206198

207-
if(ns.follow(object_offset.type())!=
208-
ns.follow(access_size.type()))
209-
object_offset.make_typecast(access_size.type());
210-
sum=plus_exprt(object_offset, access_size);
199+
sum = plus_exprt(
200+
typecast_exprt::conditional_cast(object_offset, access_size.type()),
201+
access_size);
211202
}
212203

213-
214-
if(ns.follow(sum.type())!=
215-
ns.follow(object_size_expr.type()))
216-
sum.make_typecast(object_size_expr.type());
217-
218-
return binary_relation_exprt(sum, op, object_size_expr);
204+
return binary_relation_exprt(
205+
typecast_exprt::conditional_cast(sum, object_size_expr.type()),
206+
op,
207+
object_size_expr);
219208
}
220209

221210
exprt object_lower_bound(
222211
const exprt &pointer,
223-
const namespacet &ns,
224212
const exprt &offset)
225213
{
226214
exprt p_offset=pointer_offset(pointer);
@@ -230,11 +218,8 @@ exprt object_lower_bound(
230218

231219
if(offset.is_not_nil())
232220
{
233-
if(ns.follow(p_offset.type())!=ns.follow(offset.type()))
234-
p_offset=
235-
plus_exprt(p_offset, typecast_exprt(offset, p_offset.type()));
236-
else
237-
p_offset=plus_exprt(p_offset, offset);
221+
p_offset = plus_exprt(
222+
p_offset, typecast_exprt::conditional_cast(offset, p_offset.type()));
238223
}
239224

240225
return binary_relation_exprt(p_offset, ID_lt, zero);

src/util/pointer_predicates.h

-3
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,16 @@ exprt integer_address(const exprt &pointer);
3333
exprt invalid_pointer(const exprt &pointer);
3434
exprt dynamic_object_lower_bound(
3535
const exprt &pointer,
36-
const namespacet &,
3736
const exprt &offset);
3837
exprt dynamic_object_upper_bound(
3938
const exprt &pointer,
4039
const namespacet &,
4140
const exprt &access_size);
4241
exprt object_lower_bound(
4342
const exprt &pointer,
44-
const namespacet &,
4543
const exprt &offset);
4644
exprt object_upper_bound(
4745
const exprt &pointer,
48-
const namespacet &,
4946
const exprt &access_size);
5047

5148
#endif // CPROVER_UTIL_POINTER_PREDICATES_H

0 commit comments

Comments
 (0)