Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 3d615af

Browse files
committedJan 14, 2019
Use (non-trivial) constructors for exprt/codet
This is more efficient, type safe, and easier to read.
1 parent 6b35786 commit 3d615af

File tree

7 files changed

+22
-28
lines changed

7 files changed

+22
-28
lines changed
 

‎src/ansi-c/c_typecheck_expr.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1300,7 +1300,7 @@ void c_typecheck_baset::typecheck_expr_index(exprt &expr)
13001300
// p[i] is syntactic sugar for *(p+i)
13011301

13021302
typecheck_arithmetic_pointer(expr.op0());
1303-
exprt addition(ID_plus, array_expr.type());
1303+
plus_exprt addition(array_expr.type());
13041304
addition.operands().swap(expr.operands());
13051305
expr.add_to_operands(std::move(addition));
13061306
expr.id(ID_dereference);

‎src/cpp/cpp_typecheck_constructor.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,7 @@ void cpp_typecheckt::default_ctor(
128128
decl.type().subtype().make_nil();
129129
decl.add_source_location()=source_location;
130130

131-
decl.value().id(ID_code);
132-
decl.value().type()=typet(ID_code);
133-
decl.value().set(ID_statement, ID_block);
131+
decl.value() = code_blockt();
134132
decl.add(ID_cv).make_nil();
135133
decl.add(ID_throw_decl).make_nil();
136134

‎src/cpp/cpp_typecheck_conversions.cpp

+2-3
Original file line numberDiff line numberDiff line change
@@ -1402,9 +1402,8 @@ bool cpp_typecheckt::reference_binding(
14021402
{
14031403
{
14041404
// create temporary object
1405-
exprt tmp=exprt(ID_side_effect, type.subtype());
1406-
tmp.set(ID_statement, ID_temporary_object);
1407-
tmp.add_source_location()=expr.source_location();
1405+
side_effect_exprt tmp(
1406+
ID_temporary_object, type.subtype(), expr.source_location());
14081407
// tmp.set(ID_C_lvalue, true);
14091408
tmp.add_to_operands(std::move(new_expr));
14101409
new_expr.swap(tmp);

‎src/cpp/cpp_typecheck_destructor.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ void cpp_typecheckt::default_dtor(
3737
decl.type().id(ID_function_type);
3838
decl.type().subtype().make_nil();
3939

40-
decl.value().id(ID_code);
41-
decl.value().add(ID_type).id(ID_code);
42-
decl.value().set(ID_statement, ID_block);
40+
decl.value() = code_blockt();
4341
decl.add(ID_cv).make_nil();
4442
decl.add(ID_throw_decl).make_nil();
4543

‎src/goto-instrument/goto_program2code.cpp

+14-16
Original file line numberDiff line numberDiff line change
@@ -315,33 +315,31 @@ goto_programt::const_targett goto_program2codet::convert_assign_varargs(
315315
const exprt this_va_list_expr=assign.lhs();
316316
const exprt &r=skip_typecast(assign.rhs());
317317

318-
// we don't bother setting the type
319-
code_function_callt f;
320-
f.lhs().make_nil();
321-
322318
if(r.id()==ID_constant &&
323319
(r.is_zero() || to_constant_expr(r).get_value()==ID_NULL))
324320
{
325-
f.function() = symbol_exprt("va_end", code_typet({}, empty_typet()));
326-
f.arguments().push_back(this_va_list_expr);
321+
code_function_callt f(
322+
symbol_exprt("va_end", code_typet({}, empty_typet())),
323+
{this_va_list_expr});
327324
f.arguments().back().type().id(ID_gcc_builtin_va_list);
328325

329326
dest.add_to_operands(std::move(f));
330327
}
331328
else if(r.id()==ID_address_of)
332329
{
333-
f.function() = symbol_exprt("va_start", code_typet({}, empty_typet()));
334-
f.arguments().push_back(this_va_list_expr);
335-
f.arguments().back().type().id(ID_gcc_builtin_va_list);
336-
f.arguments().push_back(to_address_of_expr(r).object());
330+
code_function_callt f(
331+
symbol_exprt("va_start", code_typet({}, empty_typet())),
332+
{this_va_list_expr, to_address_of_expr(r).object()});
333+
f.arguments().front().type().id(ID_gcc_builtin_va_list);
337334

338335
dest.add_to_operands(std::move(f));
339336
}
340337
else if(r.id()==ID_side_effect &&
341338
to_side_effect_expr(r).get_statement()==ID_gcc_builtin_va_arg_next)
342339
{
343-
f.function() = symbol_exprt("va_arg", code_typet({}, empty_typet()));
344-
f.arguments().push_back(this_va_list_expr);
340+
code_function_callt f(
341+
symbol_exprt("va_arg", code_typet({}, empty_typet())),
342+
{this_va_list_expr});
345343
f.arguments().back().type().id(ID_gcc_builtin_va_list);
346344

347345
side_effect_expr_function_callt type_of;
@@ -388,10 +386,10 @@ goto_programt::const_targett goto_program2codet::convert_assign_varargs(
388386
}
389387
else
390388
{
391-
f.function() = symbol_exprt("va_copy", code_typet({}, empty_typet()));
392-
f.arguments().push_back(this_va_list_expr);
393-
f.arguments().back().type().id(ID_gcc_builtin_va_list);
394-
f.arguments().push_back(r);
389+
code_function_callt f(
390+
symbol_exprt("va_copy", code_typet({}, empty_typet())),
391+
{this_va_list_expr, r});
392+
f.arguments().front().type().id(ID_gcc_builtin_va_list);
395393

396394
dest.add_to_operands(std::move(f));
397395
}

‎src/goto-programs/goto_convert.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1151,7 +1151,7 @@ exprt goto_convertt::case_guard(
11511151
return equal_exprt(value, case_op.at(0));
11521152
else
11531153
{
1154-
exprt dest = exprt(ID_or, bool_typet());
1154+
or_exprt dest;
11551155
dest.reserve_operands(case_op.size());
11561156

11571157
forall_expr(it, case_op)

‎src/goto-symex/slice_by_trace.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,8 @@ void symex_slice_by_tracet::compute_ts_back(
305305
eq_conds.push_back(equal_exprt(*pvi, std::move(constant_value)));
306306
pvi++;
307307
}
308-
exprt val_merge=exprt(ID_and, typet(ID_bool));
308+
309+
and_exprt val_merge;
309310
val_merge.operands().reserve(eq_conds.size()+1);
310311
val_merge.copy_to_operands(merge[j+1]);
311312
for(std::list<exprt>::iterator k=eq_conds.begin();

0 commit comments

Comments
 (0)
Please sign in to comment.