void uninitialized_domaint::transform( locationt from, locationt to, ai_baset &ai, const namespacet &ns) { if(has_values.is_false()) return; switch(from->type) { case DECL: { const irep_idt &identifier= to_code_decl(from->code).get_identifier(); const symbolt &symbol=ns.lookup(identifier); if(!symbol.is_static_lifetime) uninitialized.insert(identifier); } break; default: { std::list<exprt> read=expressions_read(*from); std::list<exprt> written=expressions_written(*from); forall_expr_list(it, written) assign(*it); // we only care about the *first* uninitalized use forall_expr_list(it, read) assign(*it); } } }
void symex_slicet::slice( symex_target_equationt &equation, const expr_listt &exprs) { // collect dependencies forall_expr_list(expr_it, exprs) get_symbols(*expr_it); slice(equation); }
std::ostream &operator << (std::ostream &out, const guardt &g) { forall_expr_list(it, g.guard_list) out << "*** " << it->pretty() << std::endl; return out; }