Skip to content

Commit 3eba46a

Browse files
author
Daniel Kroening
authored
Merge pull request #3141 from smowton/smowton/cleanup/value-set-free
Remove unused ID_free and related methods
2 parents 9686a44 + 35cfbb8 commit 3eba46a

14 files changed

+0
-399
lines changed

src/analyses/invariant_set.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,10 +1104,6 @@ void invariant_sett::apply_code(const codet &code)
11041104
{
11051105
// does nothing
11061106
}
1107-
else if(statement==ID_free)
1108-
{
1109-
// does nothing
1110-
}
11111107
else if(statement==ID_printf)
11121108
{
11131109
// does nothing

src/ansi-c/expr2c.cpp

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2996,9 +2996,6 @@ std::string expr2ct::convert_code(
29962996
if(statement==ID_switch_case)
29972997
return convert_code_switch_case(to_code_switch_case(src), indent);
29982998

2999-
if(statement==ID_free)
3000-
return convert_code_free(src, indent);
3001-
30022999
if(statement==ID_array_set)
30033000
return convert_code_array_set(src, indent);
30043001

@@ -3028,19 +3025,6 @@ std::string expr2ct::convert_code_assign(
30283025
return dest;
30293026
}
30303027

3031-
std::string expr2ct::convert_code_free(
3032-
const codet &src,
3033-
unsigned indent)
3034-
{
3035-
if(src.operands().size()!=1)
3036-
{
3037-
unsigned precedence;
3038-
return convert_norep(src, precedence);
3039-
}
3040-
3041-
return indent_str(indent)+"FREE("+convert(src.op0())+");";
3042-
}
3043-
30443028
std::string expr2ct::convert_code_lock(
30453029
const codet &src,
30463030
unsigned indent)

src/ansi-c/expr2c_class.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,6 @@ class expr2ct
187187
std::string convert_code_switch_case(const code_switch_caset &src, unsigned indent);
188188
std::string convert_code_asm(const code_asmt &src, unsigned indent);
189189
std::string convert_code_assign(const code_assignt &src, unsigned indent);
190-
std::string convert_code_free(const codet &src, unsigned indent);
191190
// NOLINTNEXTLINE(whitespace/line_length)
192191
std::string convert_code_ifthenelse(const code_ifthenelset &src, unsigned indent);
193192
std::string convert_code_for(const code_fort &src, unsigned indent);

src/goto-programs/wp.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,8 +259,6 @@ exprt wp(
259259
return post;
260260
else if(statement==ID_printf)
261261
return post; // ignored
262-
else if(statement==ID_free)
263-
return post; // ignored
264262
else if(statement==ID_asm)
265263
return post; // ignored
266264
else if(statement==ID_fence)

src/goto-symex/symex_other.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,6 @@ void goto_symext::symex_other(
9494
clean_expr(clean_code, state, false);
9595
symex_cpp_delete(state, clean_code);
9696
}
97-
else if(statement==ID_free)
98-
{
99-
// ignore
100-
}
10197
else if(statement==ID_printf)
10298
{
10399
codet clean_code=code;

src/pointer-analysis/value_set.cpp

Lines changed: 0 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,86 +1274,6 @@ void value_sett::assign(
12741274
}
12751275
}
12761276

1277-
void value_sett::do_free(
1278-
const exprt &op,
1279-
const namespacet &ns)
1280-
{
1281-
// op must be a pointer
1282-
if(op.type().id()!=ID_pointer)
1283-
throw "free expected to have pointer-type operand";
1284-
1285-
// find out what it points to
1286-
object_mapt value_set;
1287-
get_value_set(op, value_set, ns, false);
1288-
1289-
const object_map_dt &object_map=value_set.read();
1290-
1291-
// find out which *instances* interest us
1292-
dynamic_object_id_sett to_mark;
1293-
1294-
for(object_map_dt::const_iterator
1295-
it=object_map.begin();
1296-
it!=object_map.end();
1297-
it++)
1298-
{
1299-
const exprt &object=object_numbering[it->first];
1300-
1301-
if(object.id()==ID_dynamic_object)
1302-
{
1303-
const dynamic_object_exprt &dynamic_object=
1304-
to_dynamic_object_expr(object);
1305-
1306-
if(dynamic_object.valid().is_true())
1307-
to_mark.insert(dynamic_object.get_instance());
1308-
}
1309-
}
1310-
1311-
// mark these as 'may be invalid'
1312-
// this, unfortunately, destroys the sharing
1313-
for(valuest::iterator v_it=values.begin();
1314-
v_it!=values.end();
1315-
v_it++)
1316-
{
1317-
object_mapt new_object_map;
1318-
1319-
const object_map_dt &old_object_map=
1320-
v_it->second.object_map.read();
1321-
1322-
bool changed=false;
1323-
1324-
for(object_map_dt::const_iterator
1325-
o_it=old_object_map.begin();
1326-
o_it!=old_object_map.end();
1327-
o_it++)
1328-
{
1329-
const exprt &object=object_numbering[o_it->first];
1330-
1331-
if(object.id()==ID_dynamic_object)
1332-
{
1333-
const dynamic_object_exprt &dynamic_object=
1334-
to_dynamic_object_expr(object);
1335-
1336-
if(to_mark.count(dynamic_object.get_instance())==0)
1337-
set(new_object_map, *o_it);
1338-
else
1339-
{
1340-
// adjust
1341-
offsett o = o_it->second;
1342-
exprt tmp(object);
1343-
to_dynamic_object_expr(tmp).valid()=exprt(ID_unknown);
1344-
insert(new_object_map, tmp, o);
1345-
changed=true;
1346-
}
1347-
}
1348-
else
1349-
set(new_object_map, *o_it);
1350-
}
1351-
1352-
if(changed)
1353-
v_it->second.object_map=new_object_map;
1354-
}
1355-
}
1356-
13571277
void value_sett::assign_rec(
13581278
const exprt &lhs,
13591279
const object_mapt &values_rhs,
@@ -1610,15 +1530,6 @@ void value_sett::apply_code_rec(
16101530
{
16111531
// does nothing
16121532
}
1613-
else if(statement==ID_free)
1614-
{
1615-
// this may kill a valid bit
1616-
1617-
if(code.operands().size()!=1)
1618-
throw "free expected to have one operand";
1619-
1620-
do_free(code.op0(), ns);
1621-
}
16221533
else if(statement=="lock" || statement=="unlock")
16231534
{
16241535
// ignore for now

src/pointer-analysis/value_set.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -487,13 +487,6 @@ class value_sett
487487
const exprt &src,
488488
exprt &dest) const;
489489

490-
/// Marks objects that may be pointed to by `op` as maybe-invalid
491-
/// \param op: pointer to invalidate
492-
/// \param ns: global namespace
493-
void do_free(
494-
const exprt &op,
495-
const namespacet &ns);
496-
497490
/// Extracts a member from a struct- or union-typed expression.
498491
/// Usually that means making a `member_exprt`, but this can shortcut
499492
/// extracting members from constants or with-expressions.

src/pointer-analysis/value_set_fi.cpp

Lines changed: 0 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,83 +1115,6 @@ void value_set_fit::assign(
11151115
}
11161116
}
11171117

1118-
void value_set_fit::do_free(
1119-
const exprt &op,
1120-
const namespacet &ns)
1121-
{
1122-
// op must be a pointer
1123-
if(op.type().id()!=ID_pointer)
1124-
throw "free expected to have pointer-type operand";
1125-
1126-
// find out what it points to
1127-
object_mapt value_set;
1128-
get_value_set(op, value_set, ns);
1129-
entryt e; e.identifier="VP:TEMP";
1130-
e.object_map = value_set;
1131-
flatten(e, value_set);
1132-
1133-
const object_map_dt &object_map=value_set.read();
1134-
1135-
// find out which *instances* interest us
1136-
dynamic_object_id_sett to_mark;
1137-
1138-
forall_objects(it, object_map)
1139-
{
1140-
const exprt &object=object_numbering[it->first];
1141-
1142-
if(object.id()==ID_dynamic_object)
1143-
{
1144-
const dynamic_object_exprt &dynamic_object=
1145-
to_dynamic_object_expr(object);
1146-
1147-
if(dynamic_object.valid().is_true())
1148-
to_mark.insert(dynamic_object.get_instance());
1149-
}
1150-
}
1151-
1152-
// mark these as 'may be invalid'
1153-
// this, unfortunately, destroys the sharing
1154-
for(valuest::iterator v_it=values.begin();
1155-
v_it!=values.end();
1156-
v_it++)
1157-
{
1158-
object_mapt new_object_map;
1159-
1160-
const object_map_dt &old_object_map=
1161-
v_it->second.object_map.read();
1162-
1163-
bool changed=false;
1164-
1165-
forall_objects(o_it, old_object_map)
1166-
{
1167-
const exprt &object=object_numbering[o_it->first];
1168-
1169-
if(object.id()==ID_dynamic_object)
1170-
{
1171-
const dynamic_object_exprt &dynamic_object=
1172-
to_dynamic_object_expr(object);
1173-
1174-
if(to_mark.count(dynamic_object.get_instance())==0)
1175-
set(new_object_map, *o_it);
1176-
else
1177-
{
1178-
// adjust
1179-
offsett o = o_it->second;
1180-
exprt tmp(object);
1181-
to_dynamic_object_expr(tmp).valid()=exprt(ID_unknown);
1182-
insert(new_object_map, tmp, o);
1183-
changed=true;
1184-
}
1185-
}
1186-
else
1187-
set(new_object_map, *o_it);
1188-
}
1189-
1190-
if(changed)
1191-
v_it->second.object_map=new_object_map;
1192-
}
1193-
}
1194-
11951118
void value_set_fit::assign_rec(
11961119
const exprt &lhs,
11971120
const object_mapt &values_rhs,
@@ -1450,15 +1373,6 @@ void value_set_fit::apply_code(
14501373
{
14511374
// does nothing
14521375
}
1453-
else if(statement==ID_free)
1454-
{
1455-
// this may kill a valid bit
1456-
1457-
if(code.operands().size()!=1)
1458-
throw "free expected to have one operand";
1459-
1460-
do_free(code.op0(), ns);
1461-
}
14621376
else if(statement=="lock" || statement=="unlock")
14631377
{
14641378
// ignore for now

src/pointer-analysis/value_set_fi.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -339,10 +339,6 @@ class value_set_fit
339339
const namespacet &ns,
340340
assign_recursion_sett &recursion_set);
341341

342-
void do_free(
343-
const exprt &op,
344-
const namespacet &ns);
345-
346342
void flatten(const entryt &e, object_mapt &dest) const;
347343

348344
void flatten_rec(

0 commit comments

Comments
 (0)