Skip to content

Commit 03eecc2

Browse files
committed
use instructiont::get_function_call() and get_assign()
This replaces direct access to instructiont::code to the provided API for the case of assignment and function call instructions.
1 parent e0a6f44 commit 03eecc2

20 files changed

+43
-47
lines changed

jbmc/src/java_bytecode/replace_java_nondet.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ static bool is_assignment_from(
146146
{
147147
return false;
148148
}
149-
const auto &rhs = to_code_assign(instr.code).rhs();
149+
const auto &rhs = instr.get_assign().rhs();
150150
return is_symbol_with_id(rhs, identifier) ||
151151
is_typecast_with_id(rhs, identifier);
152152
}
@@ -227,8 +227,7 @@ static goto_programt::targett check_and_replace_target(
227227
"either have a variable for the return value in its lhs() or the next "
228228
"instruction should be an assignment of the return value to a temporary "
229229
"variable");
230-
const exprt &return_value_assignment =
231-
to_code_assign(next_instr->code).lhs();
230+
const exprt &return_value_assignment = next_instr->get_assign().lhs();
232231

233232
// If the assignment is null, return.
234233
if(
@@ -290,7 +289,7 @@ static goto_programt::targett check_and_replace_target(
290289
else if(target_instruction->is_assign())
291290
{
292291
// Assume that the LHS of *this* assignment is the actual nondet variable
293-
const auto &nondet_var = to_code_assign(target_instruction->code).lhs();
292+
const auto &nondet_var = target_instruction->get_assign().lhs();
294293

295294
side_effect_expr_nondett inserted_expr(
296295
nondet_var.type(), target_instruction->source_location);

src/analyses/ai.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ bool ai_baset::visit_function_call(
398398
// it generates a synthetic goto_functions object for this
399399
if(!goto_functions.function_map.empty())
400400
{
401-
const code_function_callt &code = to_code_function_call(l_call->code);
401+
const code_function_callt &code = l_call->get_function_call();
402402
const exprt &callee_expression = code.function();
403403

404404
if(callee_expression.id() == ID_symbol)

src/analyses/call_graph.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ static void forall_callsites(
5656
{
5757
if(i_it->is_function_call())
5858
{
59-
const exprt &function_expr=to_code_function_call(i_it->code).function();
59+
const exprt &function_expr = i_it->get_function_call().function();
6060
if(function_expr.id()==ID_symbol)
6161
{
6262
const irep_idt &callee=to_symbol_expr(function_expr).get_identifier();

src/analyses/custom_bitvector_analysis.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ void custom_bitvector_domaint::transform(
287287
{
288288
case ASSIGN:
289289
{
290-
const code_assignt &code_assign=to_code_assign(instruction.code);
290+
const code_assignt &code_assign = instruction.get_assign();
291291
assign_struct_rec(from, code_assign.lhs(), code_assign.rhs(), cba, ns);
292292
}
293293
break;
@@ -313,8 +313,8 @@ void custom_bitvector_domaint::transform(
313313

314314
case FUNCTION_CALL:
315315
{
316-
const code_function_callt &code_function_call=
317-
to_code_function_call(instruction.code);
316+
const code_function_callt &code_function_call =
317+
instruction.get_function_call();
318318
const exprt &function=code_function_call.function();
319319

320320
if(function.id()==ID_symbol)

src/analyses/does_remove_const.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ std::pair<bool, source_locationt> does_remove_constt::operator()() const
4040
continue;
4141
}
4242

43-
const code_assignt &assign=to_code_assign(instruction.code);
43+
const code_assignt &assign = instruction.get_assign();
4444
const typet &rhs_type=assign.rhs().type();
4545
const typet &lhs_type=assign.lhs().type();
4646

src/analyses/escape_analysis.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ void escape_domaint::transform(
189189
{
190190
case ASSIGN:
191191
{
192-
const code_assignt &code_assign=to_code_assign(instruction.code);
192+
const code_assignt &code_assign = instruction.get_assign();
193193

194194
std::set<irep_idt> cleanup_functions;
195195
get_rhs_cleanup(code_assign.rhs(), cleanup_functions);
@@ -213,8 +213,8 @@ void escape_domaint::transform(
213213

214214
case FUNCTION_CALL:
215215
{
216-
const code_function_callt &code_function_call=
217-
to_code_function_call(instruction.code);
216+
const code_function_callt &code_function_call =
217+
instruction.get_function_call();
218218
const exprt &function=code_function_call.function();
219219

220220
if(function.id()==ID_symbol)
@@ -467,7 +467,7 @@ void escape_analysist::instrument(
467467

468468
if(instruction.type == ASSIGN)
469469
{
470-
const code_assignt &code_assign = to_code_assign(instruction.code);
470+
const code_assignt &code_assign = instruction.get_assign();
471471

472472
std::set<irep_idt> cleanup_functions;
473473
operator[](i_it).check_lhs(code_assign.lhs(), cleanup_functions);

src/analyses/flow_insensitive_analysis.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ exprt flow_insensitive_abstract_domain_baset::get_return_lhs(locationt to) const
3838
return static_cast<const exprt &>(get_nil_irep());
3939

4040
// must be the function call
41-
return to_code_function_call(to->code).lhs();
41+
return to->get_function_call().lhs();
4242
}
4343

4444
void flow_insensitive_analysis_baset::operator()(
@@ -153,7 +153,7 @@ bool flow_insensitive_analysis_baset::visit(
153153
if(l->is_function_call())
154154
{
155155
// this is a big special case
156-
const code_function_callt &code = to_code_function_call(l->code);
156+
const code_function_callt &code = l->get_function_call();
157157

158158
changed = do_function_call_rec(
159159
function_id,
@@ -202,7 +202,7 @@ bool flow_insensitive_analysis_baset::do_function_call(
202202

203203
if(!goto_function.body_available())
204204
{
205-
const code_function_callt &code = to_code_function_call(l_call->code);
205+
const code_function_callt &code = l_call->get_function_call();
206206

207207
goto_programt temp;
208208

src/analyses/global_may_alias.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ void global_may_alias_domaint::transform(
111111
{
112112
case ASSIGN:
113113
{
114-
const code_assignt &code_assign = to_code_assign(instruction.code);
114+
const code_assignt &code_assign = instruction.get_assign();
115115

116116
std::set<irep_idt> rhs_aliases;
117117
get_rhs_aliases(code_assign.rhs(), rhs_aliases);

src/analyses/goto_rw.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ void goto_rw(
802802
break;
803803

804804
case ASSIGN:
805-
goto_rw(function, target, to_code_assign(target->code), rw_set);
805+
goto_rw(function, target, target->get_assign(), rw_set);
806806
break;
807807

808808
case DEAD:
@@ -817,7 +817,7 @@ void goto_rw(
817817
break;
818818

819819
case FUNCTION_CALL:
820-
goto_rw(function, target, to_code_function_call(target->code), rw_set);
820+
goto_rw(function, target, target->get_function_call(), rw_set);
821821
break;
822822
}
823823
}

src/analyses/interval_domain.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ void interval_domaint::transform(
7979
break;
8080

8181
case ASSIGN:
82-
assign(to_code_assign(instruction.code));
82+
assign(instruction.get_assign());
8383
break;
8484

8585
case GOTO:
@@ -105,7 +105,7 @@ void interval_domaint::transform(
105105
case FUNCTION_CALL:
106106
{
107107
const code_function_callt &code_function_call =
108-
to_code_function_call(instruction.code);
108+
instruction.get_function_call();
109109
if(code_function_call.lhs().is_not_nil())
110110
havoc_rec(code_function_call.lhs());
111111
break;

src/analyses/local_may_alias.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ void local_may_aliast::build(const goto_functiont &goto_function)
376376
{
377377
case ASSIGN:
378378
{
379-
const code_assignt &code_assign = to_code_assign(instruction.code);
379+
const code_assignt &code_assign = instruction.get_assign();
380380
assign_lhs(
381381
code_assign.lhs(), code_assign.rhs(), loc_info_src, loc_info_dest);
382382
break;
@@ -395,7 +395,7 @@ void local_may_aliast::build(const goto_functiont &goto_function)
395395
case FUNCTION_CALL:
396396
{
397397
const code_function_callt &code_function_call =
398-
to_code_function_call(instruction.code);
398+
instruction.get_function_call();
399399
if(code_function_call.lhs().is_not_nil())
400400
assign_lhs(
401401
code_function_call.lhs(), nil_exprt(), loc_info_src, loc_info_dest);

src/analyses/reaching_definitions.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ void rd_range_domaint::transform_function_call(
212212
const irep_idt &function_to,
213213
reaching_definitions_analysist &rd)
214214
{
215-
const code_function_callt &code=to_code_function_call(from->code);
215+
const code_function_callt &code = from->get_function_call();
216216

217217
// only if there is an actual call, i.e., we have a body
218218
if(function_from != function_to)
@@ -261,7 +261,7 @@ void rd_range_domaint::transform_function_call(
261261
else
262262
{
263263
// handle return values of undefined functions
264-
if(to_code_function_call(from->code).lhs().is_not_nil())
264+
if(from->get_function_call().lhs().is_not_nil())
265265
transform_assign(ns, from, function_from, from, rd);
266266
}
267267
}
@@ -276,7 +276,7 @@ void rd_range_domaint::transform_end_function(
276276
{
277277
locationt call = to;
278278
--call;
279-
const code_function_callt &code=to_code_function_call(call->code);
279+
const code_function_callt &code = call->get_function_call();
280280

281281
valuest new_values;
282282
new_values.swap(values);

src/analyses/static_analysis.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ exprt static_analysis_baset::get_return_lhs(locationt to)
4545
// must be the function call
4646
assert(to->is_function_call());
4747

48-
const code_function_callt &code=
49-
to_code_function_call(to->code);
48+
const code_function_callt &code = to->get_function_call();
5049

5150
return code.lhs();
5251
}
@@ -212,8 +211,7 @@ bool static_analysis_baset::visit(
212211
if(l->is_function_call())
213212
{
214213
// this is a big special case
215-
const code_function_callt &code=
216-
to_code_function_call(l->code);
214+
const code_function_callt &code = l->get_function_call();
217215

218216
do_function_call_rec(
219217
function_identifier,

src/goto-instrument/accelerate/acceleration_utils.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ void acceleration_utilst::find_modified(
105105
{
106106
if(t->is_assign())
107107
{
108-
code_assignt assignment=to_code_assign(t->code);
108+
code_assignt assignment = t->get_assign();
109109
modified.insert(assignment.lhs());
110110
}
111111
}
@@ -247,7 +247,7 @@ exprt acceleration_utilst::precondition(patht &path)
247247
if(t->is_assign())
248248
{
249249
// XXX Need to check for aliasing...
250-
const code_assignt &assignment=to_code_assign(t->code);
250+
const code_assignt &assignment = t->get_assign();
251251
const exprt &lhs=assignment.lhs();
252252
const exprt &rhs=assignment.rhs();
253253

@@ -511,7 +511,7 @@ acceleration_utilst::expr_pairst acceleration_utilst::gather_array_assignments(
511511
if(r_it->is_assign())
512512
{
513513
// Is this an array assignment?
514-
code_assignt assignment=to_code_assign(r_it->code);
514+
code_assignt assignment = r_it->get_assign();
515515

516516
if(assignment.lhs().id()==ID_index)
517517
{

src/goto-instrument/accelerate/cone_of_influence.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ void cone_of_influencet::cone_of_influence(
127127

128128
if(i.is_assign())
129129
{
130-
const code_assignt &assignment=to_code_assign(i.code);
130+
const code_assignt &assignment = i.get_assign();
131131
expr_sett lhs_syms;
132132
bool care=false;
133133

src/goto-instrument/accelerate/polynomial_accelerator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,7 @@ exprt polynomial_acceleratort::precondition(patht &path)
787787
if(t->is_assign())
788788
{
789789
// XXX Need to check for aliasing...
790-
const code_assignt &assignment=to_code_assign(t->code);
790+
const code_assignt &assignment = t->get_assign();
791791
const exprt &lhs=assignment.lhs();
792792
const exprt &rhs=assignment.rhs();
793793

src/goto-instrument/undefined_functions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void undefined_function_abort_path(goto_modelt &goto_model)
4141
if(!ins.is_function_call())
4242
continue;
4343

44-
const code_function_callt &call=to_code_function_call(ins.code);
44+
const code_function_callt &call = ins.get_function_call();
4545

4646
if(call.function().id()!=ID_symbol)
4747
continue;

src/goto-programs/compute_called_functions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ compute_called_functions(const goto_functionst &goto_functions)
115115
if(instruction.is_function_call())
116116
{
117117
compute_functions(
118-
to_code_function_call(instruction.code).function(), working_queue);
118+
instruction.get_function_call().function(), working_queue);
119119
}
120120
}
121121
}

unit/analyses/ai/ai.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class instruction_counter_analysist : public ait<instruction_counter_domaint>
9494
{
9595
if(!i.is_assign())
9696
return false;
97-
const code_assignt &assign = to_code_assign(i.code);
97+
const code_assignt &assign = i.get_assign();
9898
return
9999
assign.lhs().id() == ID_symbol &&
100100
id2string(to_symbol_expr(assign.lhs()).get_identifier()).find('y') !=

unit/analyses/constant_propagator.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,9 @@ SCENARIO("constant_propagator", "[core][analyses][constant_propagator]")
7070
// Find the instruction after "y = 2;"
7171
goto_programt::const_targett test_instruction =
7272
main_function.body.instructions.begin();
73-
while(
74-
test_instruction != main_function.body.instructions.end() &&
75-
(!test_instruction->is_assign() ||
76-
to_code_assign(test_instruction->code).lhs() != local_y.symbol_expr()))
73+
while(test_instruction != main_function.body.instructions.end() &&
74+
(!test_instruction->is_assign() ||
75+
test_instruction->get_assign().lhs() != local_y.symbol_expr()))
7776
{
7877
++test_instruction;
7978
}
@@ -311,10 +310,10 @@ SCENARIO("constant_propagator", "[core][analyses][constant_propagator]")
311310
// have been propagated once we reach it.
312311
goto_programt::const_targett test_instruction =
313312
main_function.body.instructions.begin();
314-
while(test_instruction != main_function.body.instructions.end() &&
315-
!(test_instruction->is_assign() &&
316-
to_code_assign(test_instruction->code).lhs() ==
317-
marker_symbol.symbol_expr()))
313+
while(
314+
test_instruction != main_function.body.instructions.end() &&
315+
!(test_instruction->is_assign() &&
316+
test_instruction->get_assign().lhs() == marker_symbol.symbol_expr()))
318317
{
319318
++test_instruction;
320319
}

0 commit comments

Comments
 (0)