Skip to content

Commit 21811fa

Browse files
authored
Merge pull request diffblue#4524 from antlechner/antonia/fewer-param-constructors
Use constructors with fewer parameters if possible, for dereference_exprt and plus_exprt
2 parents c7fa8e7 + cdb0133 commit 21811fa

16 files changed

+37
-50
lines changed

jbmc/src/java_bytecode/java_bytecode_convert_class.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -867,8 +867,8 @@ void java_bytecode_convert_classt::add_array_types(symbol_tablet &symbol_table)
867867
location.set_function(local_name);
868868
side_effect_exprt java_new_array(
869869
ID_java_new_array, java_reference_type(struct_tag_type), location);
870-
dereference_exprt old_array(this_symbol.symbol_expr(), struct_tag_type);
871-
dereference_exprt new_array(local_symexpr, struct_tag_type);
870+
dereference_exprt old_array{this_symbol.symbol_expr()};
871+
dereference_exprt new_array{local_symexpr};
872872
member_exprt old_length(
873873
old_array, length_component.get_name(), length_component.type());
874874
java_new_array.copy_to_operands(old_length);

jbmc/src/java_bytecode/java_bytecode_convert_method.cpp

+7-9
Original file line numberDiff line numberDiff line change
@@ -1623,7 +1623,7 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
16231623

16241624
const typecast_exprt pointer(op[0], java_array_type(statement[0]));
16251625

1626-
dereference_exprt array(pointer, pointer.type().subtype());
1626+
dereference_exprt array{pointer};
16271627
PRECONDITION(pointer.type().subtype().id() == ID_struct_tag);
16281628
array.set(ID_java_member_access, true);
16291629

@@ -2832,17 +2832,16 @@ exprt java_bytecode_convert_methodt::convert_aload(
28322832
const char &type_char = statement[0];
28332833
const typecast_exprt pointer(op[0], java_array_type(type_char));
28342834

2835-
dereference_exprt deref(pointer, pointer.type().subtype());
2835+
dereference_exprt deref{pointer};
28362836
deref.set(ID_java_member_access, true);
28372837

28382838
const member_exprt data_ptr(
28392839
deref, "data", pointer_type(java_type_from_char(type_char)));
28402840

2841-
plus_exprt data_plus_offset(data_ptr, op[1], data_ptr.type());
2841+
plus_exprt data_plus_offset{data_ptr, op[1]};
28422842
// tag it so it's easy to identify during instrumentation
28432843
data_plus_offset.set(ID_java_array_access, true);
2844-
const typet &element_type = data_ptr.type().subtype();
2845-
const dereference_exprt element(data_plus_offset, element_type);
2844+
const dereference_exprt element{data_plus_offset};
28462845
return java_bytecode_promotion(element);
28472846
}
28482847

@@ -2881,17 +2880,16 @@ code_blockt java_bytecode_convert_methodt::convert_astore(
28812880
const char type_char = statement[0];
28822881
const typecast_exprt pointer(op[0], java_array_type(type_char));
28832882

2884-
dereference_exprt deref(pointer, pointer.type().subtype());
2883+
dereference_exprt deref{pointer};
28852884
deref.set(ID_java_member_access, true);
28862885

28872886
const member_exprt data_ptr(
28882887
deref, "data", pointer_type(java_type_from_char(type_char)));
28892888

2890-
plus_exprt data_plus_offset(data_ptr, op[1], data_ptr.type());
2889+
plus_exprt data_plus_offset{data_ptr, op[1]};
28912890
// tag it so it's easy to identify during instrumentation
28922891
data_plus_offset.set(ID_java_array_access, true);
2893-
const typet &element_type = data_ptr.type().subtype();
2894-
const dereference_exprt element(data_plus_offset, element_type);
2892+
const dereference_exprt element{data_plus_offset};
28952893

28962894
code_blockt block;
28972895
block.add_source_location() = location;

jbmc/src/java_bytecode/java_object_factory.cpp

+4-6
Original file line numberDiff line numberDiff line change
@@ -1102,8 +1102,7 @@ void java_object_factoryt::array_primitive_init_code(
11021102

11031103
// *array_data_init = NONDET(TYPE [max_length_expr]);
11041104
side_effect_expr_nondett nondet_data(array_type, location);
1105-
const dereference_exprt data_pointer_deref(
1106-
tmp_finite_array_pointer, array_type);
1105+
const dereference_exprt data_pointer_deref{tmp_finite_array_pointer};
11071106
assignments.add(code_assignt(data_pointer_deref, std::move(nondet_data)));
11081107
assignments.statements().back().add_source_location() = location;
11091108

@@ -1201,9 +1200,8 @@ void java_object_factoryt::array_loop_init_code(
12011200
assignments.add(std::move(max_test));
12021201
}
12031202

1204-
const dereference_exprt arraycellref(
1205-
plus_exprt(array_init_symexpr, counter_expr, array_init_symexpr.type()),
1206-
array_init_symexpr.type().subtype());
1203+
const dereference_exprt arraycellref{
1204+
plus_exprt{array_init_symexpr, counter_expr}};
12071205

12081206
bool new_item_is_primitive = arraycellref.type().id() != ID_pointer;
12091207

@@ -1303,7 +1301,7 @@ void java_object_factoryt::gen_nondet_array_init(
13031301
is_valid_java_array(struct_type),
13041302
"Java struct array does not conform to expectations");
13051303

1306-
dereference_exprt deref_expr(expr, expr.type().subtype());
1304+
dereference_exprt deref_expr(expr);
13071305
const auto &comps = struct_type.components();
13081306
const member_exprt length_expr(deref_expr, "length", comps[1].type());
13091307
exprt init_array_expr = member_exprt(deref_expr, "data", comps[2].type());

jbmc/src/java_bytecode/java_pointer_casts.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ Author: Daniel Kroening, [email protected]
2121
/// \return dereferenced pointer
2222
static exprt clean_deref(const exprt &ptr)
2323
{
24-
return ptr.id()==ID_address_of
25-
? ptr.op0()
26-
: dereference_exprt(ptr, ptr.type().subtype());
24+
return ptr.id() == ID_address_of ? ptr.op0() : dereference_exprt{ptr};
2725
}
2826

2927
/// \par parameters: pointer

jbmc/src/java_bytecode/java_string_library_preprocess.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ exprt make_nondet_infinite_char_array(
602602
code.add(code_declt(data_pointer));
603603
code.add(make_allocate_code(data_pointer, array_type.size()));
604604
const exprt nondet_data = side_effect_expr_nondett(array_type, loc);
605-
const exprt data = dereference_exprt(data_pointer, array_type);
605+
const exprt data = dereference_exprt{data_pointer};
606606
code.add(code_assignt(data, nondet_data), loc);
607607
return data;
608608
}

src/analyses/goto_check.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1106,7 +1106,7 @@ goto_checkt::address_check(const exprt &address, const exprt &size)
11061106

11071107
binary_relation_exprt lb_check(a.first, ID_le, int_ptr);
11081108

1109-
plus_exprt ub(int_ptr, size, int_ptr.type());
1109+
plus_exprt ub{int_ptr, size};
11101110

11111111
binary_relation_exprt ub_check(ub, ID_le, plus_exprt(a.first, a.second));
11121112

@@ -1576,7 +1576,7 @@ void goto_checkt::check_rec(const exprt &expr, guardt &guard, bool address)
15761576
const exprt new_address_casted =
15771577
typecast_exprt::conditional_cast(new_address, new_pointer_type);
15781578

1579-
dereference_exprt new_deref(new_address_casted, expr.type());
1579+
dereference_exprt new_deref{new_address_casted};
15801580
new_deref.add_source_location() = deref.source_location();
15811581
pointer_validity_check(new_deref, guard);
15821582

src/ansi-c/c_typecheck_expr.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2009,7 +2009,7 @@ void c_typecheck_baset::typecheck_side_effect_function_call(
20092009
}
20102010
else
20112011
{
2012-
dereference_exprt tmp(f_op, f_op_type.subtype());
2012+
dereference_exprt tmp{f_op};
20132013
tmp.set(ID_C_implicit, true);
20142014
tmp.add_source_location()=f_op.source_location();
20152015
f_op.swap(tmp);

src/goto-instrument/wmm/shared_buffers.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1214,7 +1214,7 @@ void shared_bufferst::cfg_visitort::weak_memory(
12141214
read_delayed_expr,
12151215
if_exprt(
12161216
choice1_expr,
1217-
dereference_exprt(new_read_expr, vars.type),
1217+
dereference_exprt{new_read_expr},
12181218
to_replace_expr),
12191219
to_replace_expr); // original_instruction.code.op1());
12201220

src/goto-programs/builtin_functions.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ void goto_convertt::do_scanf(
299299
copy(array_copy_statement, OTHER, dest);
300300
#else
301301
const index_exprt new_lhs(
302-
dereference_exprt(ptr, *type), from_integer(0, index_type()));
302+
dereference_exprt{ptr}, from_integer(0, index_type()));
303303
const side_effect_expr_nondett rhs(
304304
type->subtype(), function.source_location());
305305
code_assignt assign(new_lhs, rhs);
@@ -310,7 +310,7 @@ void goto_convertt::do_scanf(
310310
else
311311
{
312312
// make it nondet for now
313-
const dereference_exprt new_lhs(ptr, *type);
313+
const dereference_exprt new_lhs{ptr};
314314
const side_effect_expr_nondett rhs(
315315
*type, function.source_location());
316316
code_assignt assign(new_lhs, rhs);
@@ -1222,7 +1222,7 @@ void goto_convertt::do_function_call_symbol(
12221222
}
12231223

12241224
// build *ptr
1225-
dereference_exprt deref_ptr(arguments[0], arguments[0].type().subtype());
1225+
dereference_exprt deref_ptr{arguments[0]};
12261226

12271227
dest.add(goto_programt::make_atomic_begin(function.source_location()));
12281228

@@ -1287,7 +1287,7 @@ void goto_convertt::do_function_call_symbol(
12871287
}
12881288

12891289
// build *ptr
1290-
dereference_exprt deref_ptr(arguments[0], arguments[0].type().subtype());
1290+
dereference_exprt deref_ptr{arguments[0]};
12911291

12921292
dest.add(goto_programt::make_atomic_begin(function.source_location()));
12931293

@@ -1356,7 +1356,7 @@ void goto_convertt::do_function_call_symbol(
13561356
}
13571357

13581358
// build *ptr
1359-
dereference_exprt deref_ptr(arguments[0], arguments[0].type().subtype());
1359+
dereference_exprt deref_ptr{arguments[0]};
13601360

13611361
dest.add(goto_programt::make_atomic_begin(function.source_location()));
13621362

@@ -1412,7 +1412,7 @@ void goto_convertt::do_function_call_symbol(
14121412
}
14131413

14141414
// build *ptr
1415-
dereference_exprt deref_ptr(arguments[0], arguments[0].type().subtype());
1415+
dereference_exprt deref_ptr{arguments[0]};
14161416

14171417
dest.add(goto_programt::make_atomic_begin(function.source_location()));
14181418

src/goto-programs/class_identifier.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ exprt get_class_identifier_field(
6767
const auto &points_to=this_expr.type().subtype();
6868
if(points_to==empty_typet())
6969
this_expr=typecast_exprt(this_expr, pointer_type(suggested_type));
70-
const dereference_exprt deref(this_expr, this_expr.type().subtype());
70+
const dereference_exprt deref{this_expr};
7171
return build_class_identifier(deref, ns);
7272
}
7373

src/goto-programs/string_abstraction.cpp

+4-5
Original file line numberDiff line numberDiff line change
@@ -964,7 +964,7 @@ bool string_abstractiont::build_symbol(const symbol_exprt &sym, exprt &dest)
964964
dest=str_symbol.symbol_expr();
965965
if(current_args.find(symbol.name)!=current_args.end() &&
966966
!is_ptr_argument(abstract_type))
967-
dest=dereference_exprt(dest, dest.type().subtype());
967+
dest = dereference_exprt{dest};
968968

969969
return false;
970970
}
@@ -1218,10 +1218,9 @@ goto_programt::targett string_abstractiont::value_assignments(
12181218
index_exprt(lhs, from_integer(i, a_size.type())),
12191219
index_exprt(rhs, from_integer(i, a_size.type())));
12201220
}
1221-
else if(lhs.type().id()==ID_pointer)
1222-
return value_assignments(dest, target,
1223-
dereference_exprt(lhs, lhs.type().subtype()),
1224-
dereference_exprt(rhs, rhs.type().subtype()));
1221+
else if(lhs.type().id() == ID_pointer)
1222+
return value_assignments(
1223+
dest, target, dereference_exprt{lhs}, dereference_exprt{rhs});
12251224
else if(lhs.type()==string_struct)
12261225
return value_assignments_string_struct(dest, target, lhs, rhs);
12271226
else if(lhs.type().id()==ID_struct || lhs.type().id()==ID_union)

src/goto-programs/string_instrumentation.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -552,9 +552,7 @@ void string_instrumentationt::do_format_string_write(
552552
default: // everything else
553553
{
554554
const exprt &argument=arguments[argument_start_inx+args];
555-
const typet &arg_type = argument.type();
556-
557-
const dereference_exprt lhs(argument, arg_type.subtype());
555+
const dereference_exprt lhs{argument};
558556

559557
side_effect_expr_nondett rhs(lhs.type(), target->source_location);
560558

@@ -594,7 +592,7 @@ void string_instrumentationt::do_format_string_write(
594592
}
595593
else
596594
{
597-
dereference_exprt lhs(arguments[i], arg_type.subtype());
595+
dereference_exprt lhs{arguments[i]};
598596

599597
side_effect_expr_nondett rhs(lhs.type(), target->source_location);
600598

src/goto-symex/symex_dereference.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,7 @@ void goto_symext::dereference_rec(exprt &expr, statet &state)
255255
address_of_exprt address_of_expr(index_expr.array());
256256
address_of_expr.type()=pointer_type(expr.type());
257257

258-
dereference_exprt tmp(
259-
plus_exprt(address_of_expr, index_expr.index()), expr.type());
258+
dereference_exprt tmp{plus_exprt{address_of_expr, index_expr.index()}};
260259
tmp.add_source_location()=expr.source_location();
261260

262261
// recursive call

src/pointer-analysis/value_set_dereference.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ value_set_dereferencet::valuet value_set_dereferencet::build_reference_to(
306306
result.pointer_guard = dynamic_object(pointer_expr);
307307

308308
// can't remove here, turn into *p
309-
result.value=dereference_exprt(pointer_expr, dereference_type);
309+
result.value = dereference_exprt{pointer_expr};
310310
}
311311
else if(root_object.id()==ID_integer_address)
312312
{

src/solvers/smt2/smt2_conv.cpp

+1-4
Original file line numberDiff line numberDiff line change
@@ -561,10 +561,7 @@ void smt2_convt::convert_address_of_rec(
561561
new_index_expr,
562562
pointer_type(array.type().subtype()));
563563

564-
plus_exprt plus_expr(
565-
address_of_expr,
566-
index,
567-
address_of_expr.type());
564+
plus_exprt plus_expr{address_of_expr, index};
568565

569566
convert_expr(plus_expr);
570567
}

src/util/simplify_expr_pointer.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ bool simplify_exprt::simplify_address_of_arg(exprt &expr)
8787
from_integer((*step_size) * (*index) + address, index_type()),
8888
pointer_type);
8989

90-
expr = dereference_exprt(typecast_expr, expr.type());
90+
expr = dereference_exprt{typecast_expr};
9191
result = true;
9292
}
9393
}
@@ -124,7 +124,7 @@ bool simplify_exprt::simplify_address_of_arg(exprt &expr)
124124
pointer_type.subtype()=expr.type();
125125
typecast_exprt typecast_expr(
126126
from_integer(address + *offset, index_type()), pointer_type);
127-
expr = dereference_exprt(typecast_expr, expr.type());
127+
expr = dereference_exprt{typecast_expr};
128128
result=true;
129129
}
130130
}

0 commit comments

Comments
 (0)