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