goto_programt::targett insert_before_preserve_labels(goto_programt &body, const goto_programt::targett &target) { const goto_programt::targett result=body.insert_before(target); move_labels(body, target, result); return result; }
goto_programt::targett link_temp_vars(const symbol_tablet &st, goto_programt &body, goto_programt::targett pos, const size_t num_temps, const size_t num_user_vars) { goto_programt::targett previous_successor(pos); ++previous_successor; for (size_t i=0; i < num_temps; ++i) { const std::string name=get_cegis_meta_name(get_tmp(i)); pos=set_rops_reference(st, body, pos, name, i); if (i == 0) move_labels(body, previous_successor, pos); pos=set_ops_reference(st, body, pos, name, i + num_user_vars); } return pos; }
void move_labels(goto_programt &body, const goto_programt::targett &from, const goto_programt::targett &to) { move_labels(body.instructions, from, to); }