@@ -1200,10 +1200,10 @@ void java_object_factoryt::array_loop_init_code(
1200
1200
assignments.add (std::move (max_test));
1201
1201
}
1202
1202
1203
- const dereference_exprt arraycellref{
1204
- plus_exprt{ array_init_symexpr, counter_expr}} ;
1203
+ const dereference_exprt element_at_counter =
1204
+ element_at_pointer_array_index ( array_init_symexpr, counter_expr) ;
1205
1205
1206
- bool new_item_is_primitive = arraycellref .type ().id () != ID_pointer;
1206
+ bool new_item_is_primitive = element_at_counter .type ().id () != ID_pointer;
1207
1207
1208
1208
// Use a temporary to initialise a new, or update an existing, non-primitive.
1209
1209
// This makes it clearer that in a sequence like
@@ -1213,17 +1213,17 @@ void java_object_factoryt::array_loop_init_code(
1213
1213
exprt init_expr;
1214
1214
if (new_item_is_primitive)
1215
1215
{
1216
- init_expr = arraycellref ;
1216
+ init_expr = element_at_counter ;
1217
1217
}
1218
1218
else
1219
1219
{
1220
1220
init_expr = allocate_objects.allocate_automatic_local_object (
1221
- arraycellref .type (), " new_array_item" );
1221
+ element_at_counter .type (), " new_array_item" );
1222
1222
1223
1223
// If we're updating an existing array item, read the existing object that
1224
1224
// we (may) alter:
1225
1225
if (update_in_place != update_in_placet::NO_UPDATE_IN_PLACE)
1226
- assignments.add (code_assignt (init_expr, arraycellref ));
1226
+ assignments.add (code_assignt (init_expr, element_at_counter ));
1227
1227
}
1228
1228
1229
1229
// MUST_UPDATE_IN_PLACE only applies to this object.
@@ -1249,7 +1249,7 @@ void java_object_factoryt::array_loop_init_code(
1249
1249
{
1250
1250
// We used a temporary variable to update or initialise an array item;
1251
1251
// now write it into the array:
1252
- assignments.add (code_assignt (arraycellref , init_expr));
1252
+ assignments.add (code_assignt (element_at_counter , init_expr));
1253
1253
}
1254
1254
1255
1255
exprt java_one=from_integer (1 , java_int_type ());
@@ -1389,11 +1389,9 @@ bool java_object_factoryt::gen_nondet_enum_init(
1389
1389
allocate_objects,
1390
1390
assignments);
1391
1391
1392
- // Generate statement using pointer arithmetic to access array element:
1393
- // expr = (expr.type())*(enum_array_expr + index_expr);
1394
- plus_exprt plus (enum_array_expr, index_expr);
1395
- const dereference_exprt arraycellref (plus);
1396
- code_assignt enum_assign (expr, typecast_exprt (arraycellref, expr.type ()));
1392
+ const dereference_exprt element_at_index =
1393
+ element_at_pointer_array_index (enum_array_expr, index_expr);
1394
+ code_assignt enum_assign (expr, typecast_exprt (element_at_index, expr.type ()));
1397
1395
assignments.add (enum_assign);
1398
1396
1399
1397
return true ;
0 commit comments