21#ifndef GCC_ANALYZER_IMPL_SM_CONTEXT
22#define GCC_ANALYZER_IMPL_SM_CONTEXT
41 bool unknown_side_effects =
false)
70 =
m_old_state->m_region_model->get_rvalue (var,
nullptr);
88 tree origin)
final override
93 =
m_new_state->m_region_model->get_rvalue (var,
nullptr);
94 const svalue *origin_new_sval
95 =
m_new_state->m_region_model->get_rvalue (origin,
nullptr);
101 logger->
log (
"%s: state transition of %qE: %s -> %s",
107 to, origin_new_sval,
m_eg.get_ext_state ());
112 tree origin)
final override
120 const svalue *origin_new_sval
121 =
m_new_state->m_region_model->get_rvalue (origin,
nullptr);
137 to, origin_new_sval,
m_eg.get_ext_state ());
141 std::unique_ptr<pending_diagnostic> d)
final override
145 const svalue *var_old_sval
146 =
m_old_state->m_region_model->get_rvalue (var,
nullptr);
151 bool terminate_path = d->terminate_path_p ();
153 m_eg.get_diagnostic_manager ().add_diagnostic
154 (&
m_sm, std::move (ploc),
155 var, var_old_sval, current, std::move (d));
158 && flag_analyzer_suppress_followups)
163 std::unique_ptr<pending_diagnostic> d)
final override
171 bool terminate_path = d->terminate_path_p ();
173 m_eg.get_diagnostic_manager ().add_diagnostic
174 (&
m_sm, std::move (ploc),
175 NULL_TREE, sval, current, std::move (d));
178 && flag_analyzer_suppress_followups)
200 if (
tree t =
m_new_state->m_region_model->get_representative_tree (sval))
208 return m_new_state->m_region_model->get_representative_tree (sval);
241 =
m_new_state->m_region_model->get_gassign_result (assign_stmt,
243 if (
tree cst = sval->maybe_get_constant ())
#define LOG_FUNC(LOGGER)
Definition analyzer-logging.h:293
Definition exploded-graph.h:783
Definition exploded-graph.h:206
Definition exploded-graph.h:40
impl_sm_context(exploded_graph &eg, int sm_idx, const state_machine &sm, exploded_node *enode_for_diag, const program_state *old_state, program_state *new_state, const sm_state_map *old_smap, sm_state_map *new_smap, path_context *path_ctxt, bool unknown_side_effects=false)
Definition impl-sm-context.h:32
void set_next_state(const svalue *sval, state_machine::state_t to, tree origin) final override
Definition impl-sm-context.h:110
sm_state_map * m_new_smap
Definition impl-sm-context.h:280
void set_global_state(state_machine::state_t state) final override
Definition impl-sm-context.h:216
path_context * m_path_ctxt
Definition impl-sm-context.h:281
void warn(tree var, std::unique_ptr< pending_diagnostic > d) final override
Definition impl-sm-context.h:140
const program_state * get_new_program_state() const final override
Definition impl-sm-context.h:264
bool unknown_side_effects_p() const final override
Definition impl-sm-context.h:254
tree is_zero_assignment(const gimple *stmt) final override
Definition impl-sm-context.h:233
log_user m_logger
Definition impl-sm-context.h:274
const program_state * m_old_state
Definition impl-sm-context.h:277
program_state * m_new_state
Definition impl-sm-context.h:278
const sm_state_map * m_old_smap
Definition impl-sm-context.h:279
void on_custom_transition(custom_transition *transition) final override
Definition impl-sm-context.h:226
void set_next_state(tree var, state_machine::state_t to, tree origin) final override
Definition impl-sm-context.h:86
void clear_all_per_svalue_state() final override
Definition impl-sm-context.h:221
const program_state * get_old_program_state() const final override
Definition impl-sm-context.h:259
tree get_fndecl_for_call(const gcall &call) final override
Definition impl-sm-context.h:54
state_machine::state_t get_state(tree var) final override
Definition impl-sm-context.h:63
state_machine::state_t get_global_state() const final override
Definition impl-sm-context.h:211
exploded_node * m_enode_for_diag
Definition impl-sm-context.h:276
state_machine::state_t get_state(const svalue *sval) final override
Definition impl-sm-context.h:76
bool m_unknown_side_effects
Definition impl-sm-context.h:284
path_context * get_path_context() const final override
Definition impl-sm-context.h:249
tree get_diagnostic_tree(tree expr) final override
Definition impl-sm-context.h:188
location_t get_emission_location() const final override
Definition impl-sm-context.h:269
exploded_graph & m_eg
Definition impl-sm-context.h:275
void warn(const svalue *sval, std::unique_ptr< pending_diagnostic > d) final override
Definition impl-sm-context.h:162
tree get_diagnostic_tree(const svalue *sval) final override
Definition impl-sm-context.h:206
logger * get_logger() const
Definition impl-sm-context.h:52
Definition analyzer-logging.h:189
Definition analyzer-logging.h:34
pretty_printer * get_printer() const
Definition analyzer-logging.h:60
void log_partial(const char *fmt,...) ATTRIBUTE_GCC_DIAG(2
void log(const char *fmt,...) ATTRIBUTE_GCC_DIAG(2
void void void start_log_line()
void void void end_log_line()
Definition program-state.h:224
Definition region-model.h:299
tree get_fndecl_for_call(const gcall &call, region_model_context *ctxt)
const state_machine & m_sm
Definition sm.h:343
int m_sm_idx
Definition sm.h:342
sm_context(int sm_idx, const state_machine &sm)
Definition sm.h:339
Definition program-state.h:92
const char * get_name() const
Definition sm.h:53
const state_machine::state * state_t
Definition sm.h:63
Definition genmatch.cc:1506
Definition genrecog.cc:1504
union tree_node * tree
Definition coretypes.h:97
void final(rtx_insn *first, FILE *file, int optimize_p)
Definition final.cc:2009
tree gimple_assign_lhs(const gassign *gs)
Definition gimple.h:2616
T dyn_cast(U *p)
Definition is-a.h:280
Definition access-diagram.h:30
@ stmt
Definition checker-event.h:38
Definition diagnostic-manager.h:35
location_t get_location() const
Definition diagnostic-manager.h:52
Definition genautomata.cc:669
#define NULL
Definition system.h:50
#define gcc_assert(EXPR)
Definition system.h:817
bool zerop(const_tree expr)
Definition tree.cc:2986
#define SSA_NAME_VAR(NODE)
Definition tree.h:2202
#define TREE_CODE(NODE)
Definition tree.h:325
#define NULL_TREE
Definition tree.h:318