本文整理汇总了C++中goto_programt::get_successors方法的典型用法代码示例。如果您正苦于以下问题:C++ goto_programt::get_successors方法的具体用法?C++ goto_programt::get_successors怎么用?C++ goto_programt::get_successors使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类goto_programt
的用法示例。
在下文中一共展示了goto_programt::get_successors方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: construct_cfg
void cfg_dominatorst::construct_cfg(
const goto_programt &program,
goto_programt::const_targett PC)
{
nodet &node=node_map[PC];
node.PC=PC;
program.get_successors(PC, node.successors);
// now do backward edges
for(goto_programt::const_targetst::const_iterator
s_it=node.successors.begin();
s_it!=node.successors.end();
s_it++)
{
node_map[*s_it].predecessors.push_back(node.PC);
}
}
示例2: remove_unreachable
void remove_unreachable(goto_programt &goto_program)
{
std::set<goto_programt::targett> reachable;
std::stack<goto_programt::targett> working;
working.push(goto_program.instructions.begin());
while(!working.empty())
{
goto_programt::targett t=working.top();
working.pop();
if(reachable.find(t)==reachable.end() &&
t!=goto_program.instructions.end())
{
reachable.insert(t);
goto_programt::targetst successors;
goto_program.get_successors(t, successors);
for(goto_programt::targetst::const_iterator
s_it=successors.begin();
s_it!=successors.end();
s_it++)
working.push(*s_it);
}
}
// make all unreachable code a skip
// unless it's an 'end_function'
Forall_goto_program_instructions(it, goto_program)
{
if(reachable.find(it)==reachable.end() &&
!it->is_end_function())
it->make_skip();
}
}