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