21#ifndef GCC_ANALYZER_SM_H
22#define GCC_ANALYZER_SM_H
55 virtual std::unique_ptr<json::value>
to_json ()
const;
104 const gphi *phi ATTRIBUTE_UNUSED,
105 tree rhs ATTRIBUTE_UNUSED)
const
116 const svalue *lhs ATTRIBUTE_UNUSED,
118 const svalue *rhs ATTRIBUTE_UNUSED)
const
124 const svalue &sval ATTRIBUTE_UNUSED,
141 virtual std::unique_ptr<pending_diagnostic>
154 bool is_mutable)
const
169 if (state_a == state_b)
178 state_t state_b ATTRIBUTE_UNUSED)
const
188 std::unique_ptr<json::object>
to_json ()
const;
293 std::unique_ptr<pending_diagnostic> d) = 0;
295 std::unique_ptr<pending_diagnostic> d) = 0;
350extern std::vector<std::unique_ptr<state_machine>>
Definition ana-state-to-diagnostic-state.h:33
Definition call-details.h:31
virtual void impl_transition(exploded_graph *eg, exploded_node *src_enode, int sm_idx)=0
virtual ~custom_transition()
Definition sm.h:234
Definition exploded-graph.h:783
Definition exploded-graph.h:206
Definition program-state.h:34
Definition analyzer-logging.h:34
Definition pending-diagnostic.h:189
Definition program-state.h:224
Definition region-model.h:299
virtual void set_next_state(tree var, state_machine::state_t to, tree origin=NULL_TREE)=0
const state_machine & m_sm
Definition sm.h:343
void on_transition(const svalue *var, state_machine::state_t from, state_machine::state_t to, tree origin=NULL_TREE)
Definition sm.h:280
virtual state_machine::state_t get_state(const svalue *)=0
virtual tree get_diagnostic_tree(tree expr)
Definition sm.h:302
virtual void warn(const svalue *var, std::unique_ptr< pending_diagnostic > d)=0
virtual void set_global_state(state_machine::state_t)=0
virtual location_t get_emission_location() const =0
virtual void set_next_state(const svalue *var, state_machine::state_t to, tree origin=NULL_TREE)=0
virtual const program_state * get_old_program_state() const =0
virtual ~sm_context()
Definition sm.h:246
virtual state_machine::state_t get_global_state() const =0
virtual tree is_zero_assignment(const gimple *stmt)=0
virtual void clear_all_per_svalue_state()=0
virtual state_machine::state_t get_state(tree var)=0
virtual void warn(tree var, std::unique_ptr< pending_diagnostic > d)=0
virtual const program_state * get_new_program_state() const =0
const region_model * get_old_region_model() const
void on_transition(tree var, state_machine::state_t from, state_machine::state_t to, tree origin=NULL_TREE)
Definition sm.h:270
virtual path_context * get_path_context() const
Definition sm.h:322
int m_sm_idx
Definition sm.h:342
virtual bool unknown_side_effects_p() const
Definition sm.h:328
sm_context(int sm_idx, const state_machine &sm)
Definition sm.h:339
virtual tree get_diagnostic_tree(const svalue *)=0
virtual tree get_fndecl_for_call(const gcall &call)=0
virtual void on_custom_transition(custom_transition *transition)=0
Definition program-state.h:92
virtual void dump_to_pp(pretty_printer *pp) const
unsigned m_id
Definition sm.h:61
virtual std::unique_ptr< json::value > to_json() const
unsigned get_id() const
Definition sm.h:57
state(const char *name, unsigned id)
Definition sm.h:50
virtual ~state()
Definition sm.h:51
const char * m_name
Definition sm.h:60
const char * get_name() const
Definition sm.h:53
const char * get_name() const
Definition sm.h:95
virtual state_t maybe_get_merged_states_nonequal(state_t state_a, state_t state_b) const
Definition sm.h:177
void validate(state_t s) const
virtual ~state_machine()
Definition sm.h:66
virtual bool inherited_state_p() const =0
virtual state_machine::state_t get_default_state(const svalue *) const
Definition sm.h:90
auto_delete_vec< state > m_states
Definition sm.h:217
state_t maybe_get_merged_state(state_t state_a, state_t state_b) const
Definition sm.h:166
virtual void check_call_preconditions(sm_context &sm_ctxt, const call_details &cd) const
Definition sm.h:110
virtual bool reset_when_passed_to_unknown_fn_p(state_t s, bool is_mutable) const
Definition sm.h:153
state_t add_custom_state(state *s)
Definition sm.h:203
virtual void on_pop_frame(sm_state_map *smap, const frame_region *frame_reg) const
Definition sm.h:130
unsigned m_next_state_id
Definition sm.h:219
state_t get_start_state() const
Definition sm.h:190
const char * m_name
Definition sm.h:214
state_machine(const char *name, logger *logger)
virtual void on_condition(sm_context &sm_ctxt, const svalue *lhs, enum tree_code op, const svalue *rhs) const
Definition sm.h:115
std::unique_ptr< json::object > to_json() const
virtual void add_global_state_to_state_graph(analyzer_state_graph &out_state_graph, state_machine::state_t state) const
virtual bool has_alt_get_inherited_state_p() const
Definition sm.h:85
virtual state_t alt_get_inherited_state(const sm_state_map &, const svalue *, const extrinsic_state &) const
Definition sm.h:77
const state_machine::state * state_t
Definition sm.h:63
virtual std::unique_ptr< pending_diagnostic > on_leak(tree var, const program_state *old_state, const program_state *new_state) const
void dump_to_pp(pretty_printer *pp) const
virtual void on_bounded_ranges(sm_context &sm_ctxt, const svalue &sval, const bounded_ranges &ranges) const
Definition sm.h:123
virtual bool on_stmt(sm_context &sm_ctxt, const gimple *stmt) const =0
virtual void on_phi(sm_context &sm_ctxt, const gphi *phi, tree rhs) const
Definition sm.h:103
unsigned alloc_state_id()
Definition sm.h:209
state_t get_state_by_name(const char *name) const
state_t m_start
Definition sm.h:223
virtual void add_state_to_state_graph(analyzer_state_graph &out_state_graph, const svalue &sval, state_machine::state_t state) const
DISABLE_COPY_AND_ASSIGN(state_machine)
state_t add_state(const char *name)
virtual bool can_purge_p(state_t s) const =0
Definition genmatch.cc:1506
Definition pretty-print.h:241
Definition genrecog.cc:1504
union tree_node * tree
Definition coretypes.h:97
struct state * state_t
Definition genautomata.cc:195
tree_code
Definition genmatch.cc:1002
Definition access-diagram.h:30
std::unique_ptr< state_machine > make_signal_state_machine(logger *)
@ stmt
Definition checker-event.h:38
std::unique_ptr< state_machine > make_taint_state_machine(logger *)
std::unique_ptr< state_machine > make_sensitive_state_machine(logger *)
std::unique_ptr< state_machine > make_pattern_test_state_machine(logger *)
std::unique_ptr< state_machine > make_va_list_state_machine(logger *)
std::unique_ptr< state_machine > make_fileptr_state_machine(logger *)
std::vector< std::unique_ptr< state_machine > > make_checkers(logger *logger)
std::unique_ptr< state_machine > make_malloc_state_machine(logger *)
bool any_pointer_p(tree expr)
std::unique_ptr< state_machine > make_fd_state_machine(logger *)
Definition constraint-manager.h:123
Definition collect2.cc:168
static control_dependences * cd
Definition tree-ssa-dce.cc:104
#define NULL_TREE
Definition tree.h:318