40 std::cout <<
"Enumerating next path...\n";
77 for(
const auto &succ : succs)
85 if((ret+1)<succs.size())
90 std::cout <<
"Backtracked to a path of size " << path.size() <<
'\n';
139 for(goto_programt::targetst::iterator it=t->targets.begin();
140 it != t->targets.end();
145 guard = t->condition();
156 return path.size()>1 && path.back().loc==
loop_header;
static exprt guard(const exprt::operandst &guards, exprt cond)
natural_loops_mutablet::natural_loopt & loop
int backtrack(patht &path)
virtual bool next(patht &path)
void complete_path(patht &path, int succ)
goto_programt::targett loop_header
goto_programt & goto_program
bool is_looping(patht &path)
void extend_path(patht &path, goto_programt::targett t, int succ)
Base class for all expressions.
instructionst::iterator targett
std::list< Target > get_successors(Target target) const
Get control-flow successors of a given instruction.
virtual bool contains(const T instruction) const
Returns true if instruction is in this loop.
The Boolean constant true.
std::list< path_nodet > patht