#include <goto_loops.h>
|
| struct | function_summaryt |
| | Per-callee summary: the leaf symbols (post check_var_name filtering) that walking the callee's body would contribute to the current loop. More...
|
|
| void | create_function_loop (goto_programt::instructionst::iterator loop_head, goto_programt::instructionst::iterator loop_exit) |
| void | get_modified_variables (goto_programt::instructionst::iterator instruction, function_loopst::iterator loop, std::vector< irep_idt > &function_name) |
| bool | compute_function_summary (const irep_idt &fname, std::vector< irep_idt > &in_progress, function_summaryt &out) |
| | Compute (or fetch the cached) summary of fname.
|
| bool | summarise_call (const code_function_call2t &call, std::vector< irep_idt > &in_progress, function_summaryt &local, std::vector< expr2tc > &written_ptrs) |
| | Fold a call inside a callee into that callee's summary.
|
| void | collect_address_taken (const expr2tc &expr, function_summaryt &out) const |
| | A variable whose address the callee takes can be reassigned through that address, which collect_lhs_symbols does not see.
|
| void | collect_loop_symbols (const expr2tc &expr, loopst::loop_varst &out) const |
| | Collect the leaf symbols of expr into out, applying check_var_name.
|
| void | collect_lhs_symbols (const expr2tc &expr, function_summaryt &out) const |
| | Walk an assignment LHS, classifying each leaf symbol: storage that is actually written goes to modified, sub-expressions used to locate that storage (pointer in *p, index in arr[i]) go to unmodified.
|
| void | add_modified_var (loopst &loop, const expr2tc &expr) |
| void | add_unmodified_var (loopst &loop, const expr2tc &expr) |
| void | add_loop_var (loopst &loop, const expr2tc &expr, bool is_modified) |
◆ function_loopst
◆ goto_loopst()
◆ add_loop_var()
| void goto_loopst::add_loop_var |
( |
loopst & | loop, |
|
|
const expr2tc & | expr, |
|
|
bool | is_modified ) |
|
protected |
◆ add_modified_var()
| void goto_loopst::add_modified_var |
( |
loopst & | loop, |
|
|
const expr2tc & | expr ) |
|
protected |
◆ add_unmodified_var()
| void goto_loopst::add_unmodified_var |
( |
loopst & | loop, |
|
|
const expr2tc & | expr ) |
|
protected |
◆ apply_callee_summary()
◆ collect_address_taken()
A variable whose address the callee takes can be reassigned through that address, which collect_lhs_symbols does not see.
◆ collect_lhs_symbols()
Walk an assignment LHS, classifying each leaf symbol: storage that is actually written goes to modified, sub-expressions used to locate that storage (pointer in *p, index in arr[i]) go to unmodified.
Sets modifies_pointer_array when the write is to an array element reached through a pointer (issue #5224).
◆ collect_loop_symbols()
Collect the leaf symbols of expr into out, applying check_var_name.
◆ compute_function_summary()
Compute (or fetch the cached) summary of fname.
in_progress is the stack of callees currently being expanded; if a re-entry is detected the walk is cut (matches the legacy in-place behaviour). Returns true when the resulting summary is complete (no cycle-cut along the way); only complete summaries are cached.
◆ create_function_loop()
| void goto_loopst::create_function_loop |
( |
goto_programt::instructionst::iterator | loop_head, |
|
|
goto_programt::instructionst::iterator | loop_exit ) |
|
protected |
◆ dump()
| void goto_loopst::dump |
( |
| ) |
const |
◆ find_function_loops()
| void goto_loopst::find_function_loops |
( |
| ) |
|
◆ get_loops() [1/2]
◆ get_loops() [2/2]
◆ get_modified_variables()
| void goto_loopst::get_modified_variables |
( |
goto_programt::instructionst::iterator | instruction, |
|
|
function_loopst::iterator | loop, |
|
|
std::vector< irep_idt > & | function_name ) |
|
protected |
◆ merge_summary()
◆ note_pointer_write()
◆ summarise_call()
Fold a call inside a callee into that callee's summary.
Returns false when the summary is incomplete, as compute_function_summary does.
◆ function_loops
◆ function_name
◆ function_summary_cache
◆ goto_function
◆ goto_functions
The documentation for this class was generated from the following files: