@@ -275,25 +275,42 @@ class goto_symext
275
275
276
276
virtual void loop_bound_exceeded (statet &, const exprt &guard);
277
277
278
- // function calls
278
+ // / Assuming the program counter of \p state is currently pointing to a return
279
+ // / instruction, assign the value in that return to the top frame's
280
+ // / \p return_value field.
279
281
void return_assignment (statet &);
280
282
281
283
virtual void no_body (const irep_idt &)
282
284
{
283
285
}
284
286
287
+ // / Symbolic execution of a function call.
288
+ // / Only functions that are symbols are supported, see
289
+ // / \ref goto_symext::symex_function_call_symbol
285
290
virtual void symex_function_call (
286
291
const get_goto_functiont &,
287
292
statet &,
288
293
const code_function_callt &);
289
294
290
295
virtual void symex_end_of_function (statet &);
291
296
297
+ // / Symbolic execution of a call to a function call.
298
+ // / For functions \c CBMC_trace and functions starting with \c __CPROVER_fkt
299
+ // / see \ref goto_symext::symex_trace and
300
+ // / \ref goto_symext::symex_fkt
301
+ // / For non-special functions see
302
+ // / \ref goto_symext::symex_function_call_code
292
303
virtual void symex_function_call_symbol (
293
304
const get_goto_functiont &,
294
305
statet &,
295
306
const code_function_callt &);
296
307
308
+ // / Symbolic execution of a function call by inlining.
309
+ // / Records the call in \p target by appending a function call step and:
310
+ // / - if the body is available create a new frame, assigns the parameters,
311
+ // / and proceed to executing the code of the function.
312
+ // / - otherwise assign a nondetministic value to the left-hand-side of the
313
+ // / call when there is one
297
314
virtual void symex_function_call_code (
298
315
const get_goto_functiont &,
299
316
statet &,
@@ -304,6 +321,12 @@ class goto_symext
304
321
unsigned thread_nr,
305
322
unsigned unwind);
306
323
324
+ // / Iterates over \p arguments and assigns them to the parameters, which are
325
+ // / symbols whose name and type are deduced from the type of \p goto_function.
326
+ // / \param function_identifier: name of the function
327
+ // / \param goto_function: function whose parameters we want to assign
328
+ // / \param [out] state: state of the goto program
329
+ // / \param arguments: arguments that are passed to the function
307
330
void parameter_assignments (
308
331
const irep_idt &function_identifier,
309
332
const goto_functionst::goto_functiont &,
0 commit comments