1#ifndef CPROVER_GOTO_PROGRAMS_STATIC_ANALYSIS_H
2#define CPROVER_GOTO_PROGRAMS_STATIC_ANALYSIS_H
115 output(goto_program,
"", out);
131 std::ostream &out)
const;
139 working_set.insert(std::pair<unsigned, locationt>(l->location_number, l));
148 goto_functionst::function_mapt::const_iterator it,
184 const std::vector<expr2tc> &arguments,
191 const goto_functionst::function_mapt::const_iterator f_it,
192 const std::vector<expr2tc> &arguments,
205 std::list<expr2tc> &dest) = 0;
222 typename state_mapt::iterator it =
state_map.find(l);
224 throw "failed to find state";
230 typename state_mapt::const_iterator it =
state_map.find(l);
232 throw "failed to find state";
253 typename state_mapt::iterator it =
state_map.find(l);
255 throw "failed to find state";
261 typename state_mapt::const_iterator it =
state_map.find(l);
263 throw "failed to find state";
269 return static_cast<T &
>(a).
merge(
static_cast<const T &
>(b), keepnew);
274 return new T(
static_cast<T &
>(s));
285 std::list<expr2tc> &dest)
override
Definition static_analysis.h:12
virtual void initialize(const namespacet &ns, locationt l)=0
friend class static_analysis_baset
Definition static_analysis.h:54
goto_programt::const_targett locationt
Definition static_analysis.h:18
expr2tc get_guard(locationt from, locationt to) const
Definition static_analysis.cpp:9
virtual void transform(const namespacet &ns, locationt from, locationt to)=0
expr2tc get_return_lhs(locationt to) const
Definition static_analysis.cpp:26
bool seen
Definition static_analysis.h:52
virtual ~abstract_domain_baset()=default
virtual void get_reference_set(const namespacet &, const expr2tc &, std::list< expr2tc > &)
Definition static_analysis.h:40
abstract_domain_baset()
Definition static_analysis.h:14
virtual void output(const namespacet &, std::ostream &) const
Definition static_analysis.h:35
Definition goto_functions.h:56
A generic container class for a control flow graph for one function, in the form of a goto-program.
Definition goto_program.h:63
instructionst::const_iterator const_targett
Definition goto_program.h:591
Definition namespace.h:10
const namespacet & ns
Definition static_analysis.h:126
abstract_domain_baset statet
Definition static_analysis.h:71
void do_function_call(locationt l_call, const goto_functionst &goto_functions, const goto_functionst::function_mapt::const_iterator f_it, const std::vector< expr2tc > &arguments, statet &new_state)
Definition static_analysis.cpp:227
void generate_states(const goto_functionst &goto_functions)
Definition static_analysis.cpp:89
void insert(locationt l)
Definition static_analysis.h:120
void output(const goto_programt &goto_program, std::ostream &out) const
Definition static_analysis.h:113
locationt get_next(working_sett &working_set)
Definition static_analysis.cpp:130
virtual bool has_location(locationt l) const =0
virtual bool merge(statet &a, const statet &b, bool keepnew=false)=0
void put_in_working_set(working_sett &working_set, locationt l)
Definition static_analysis.h:137
virtual void get_reference_set(locationt l, const expr2tc &expr, std::list< expr2tc > &dest)=0
std::set< irep_idt > functions_donet
Definition static_analysis.h:168
std::set< irep_idt > recursion_sett
Definition static_analysis.h:171
virtual void generate_state(locationt l)=0
void do_function_call_rec(locationt l_call, const expr2tc &function, const std::vector< expr2tc > &arguments, statet &new_state, const goto_functionst &goto_functions)
Definition static_analysis.cpp:293
virtual statet * make_temporary_state(statet &s)=0
virtual void update(const goto_programt &goto_program)
Definition static_analysis.cpp:108
static locationt successor(locationt l)
Definition static_analysis.h:160
functions_donet functions_done
Definition static_analysis.h:169
virtual ~static_analysis_baset()=default
virtual statet & get_state(locationt l)=0
virtual void initialize(const goto_programt &goto_program)
Definition static_analysis.h:78
std::map< unsigned, locationt > working_sett
Definition static_analysis.h:133
virtual const statet & get_state(locationt l) const =0
static_analysis_baset(const namespacet &_ns)
Definition static_analysis.h:74
bool fixedpoint(const goto_programt &goto_program, const goto_functionst &goto_functions)
Definition static_analysis.cpp:141
bool initialized
Definition static_analysis.h:178
bool visit(locationt l, working_sett &working_set, const goto_programt &goto_program, const goto_functionst &goto_functions)
Definition static_analysis.cpp:165
virtual void initialize(const goto_functionst &goto_functions)
Definition static_analysis.h:87
goto_programt::const_targett locationt
Definition static_analysis.h:72
virtual void clear()
Definition static_analysis.h:105
virtual void output(const goto_functionst &goto_functions, std::ostream &out) const
Definition static_analysis.cpp:56
recursion_sett recursion_set
Definition static_analysis.h:172
virtual void operator()(const goto_programt &goto_program)
Definition static_analysis.cpp:49
static_analysist(const namespacet &_ns)
Definition static_analysis.h:214
T & operator[](locationt l)
Definition static_analysis.h:220
std::map< locationt, T > state_mapt
Definition static_analysis.h:248
void get_reference_set(locationt l, const expr2tc &expr, std::list< expr2tc > &dest) override
Definition static_analysis.h:282
void generate_state(locationt l) override
Definition static_analysis.h:277
state_mapt state_map
Definition static_analysis.h:249
goto_programt::const_targett locationt
Definition static_analysis.h:218
const T & operator[](locationt l) const
Definition static_analysis.h:228
const statet & get_state(locationt l) const override
Definition static_analysis.h:259
statet * make_temporary_state(statet &s) override
Definition static_analysis.h:272
statet & get_state(locationt l) override
Definition static_analysis.h:251
bool merge(statet &a, const statet &b, bool keepnew=false) override
Definition static_analysis.h:267
void clear() override
Definition static_analysis.h:236
bool has_location(locationt l) const override
Definition static_analysis.h:242
#define T
Definition exp2f.c:24
Classes and definitions for non-stringy internal representation.
irep_container< expr2t > expr2tc
Definition irep2.h:431
#define false
Definition stdbool.h:10