21#ifndef GCC_ANALYZER_CHECKER_EVENT_H
22#define GCC_ANALYZER_CHECKER_EVENT_H
136 std::unique_ptr<diagnostics::digraphs::digraph>
564 pp_string (&pp,
"...catching exception here");
724 tree apparent_callee_fndecl,
725 tree apparent_caller_fndecl,
727 int stack_depth_adjustment)
730 apparent_caller_fndecl,
731 actual_depth + stack_depth_adjustment)),
753 const gcall &setjmp_call)
846 const gcall &throw_call)
868 const gcall &throw_call,
893 const gcall &throw_call,
void print_desc(pretty_printer &pp) const override
const state_transition_at_call * get_state_transition_at_call() const
Definition checker-event.h:622
call_event(const exploded_edge &eedge, const event_loc_info &loc_info, const state_transition_at_call *state_trans)
critical_state m_critical_state
Definition checker-event.h:630
const program_state * get_program_state() const final override
meaning get_meaning() const override
bool is_call_p() const final override
const state_transition_at_call * m_state_trans
Definition checker-event.h:631
void prepare_for_emission(checker_path *path, pending_diagnostic *pd, diagnostics::paths::event_id_t emission_id) final override
tree get_callee_fndecl() const
void record_critical_state(tree var, state_machine::state_t state)
Definition checker-event.h:616
const supernode * m_dest_snode
Definition checker-event.h:629
tree get_caller_fndecl() const
const supernode * m_src_snode
Definition checker-event.h:628
tree m_type
Definition checker-event.h:570
catch_cfg_edge_event(const exploded_edge &eedge, const event_loc_info &loc_info, const control_flow_op &op, tree type)
Definition checker-event.h:550
meaning get_meaning() const override
void print_desc(pretty_printer &pp) const final override
Definition checker-event.h:559
meaning get_meaning() const override
::edge get_cfg_edge() const
cfg_edge_event(enum event_kind kind, const exploded_edge &eedge, const event_loc_info &loc_info, const control_flow_op *op)
bool maybe_get_edge_sense(bool *out) const
const control_flow_op * m_op
Definition checker-event.h:502
diagnostics::paths::event_id_t m_emission_id
Definition checker-event.h:167
virtual const program_state * get_program_state() const
Definition checker-event.h:140
diagnostics::logical_locations::key get_logical_location() const final override
Definition checker-event.h:107
checker_event(enum event_kind kind, const event_loc_info &loc_info)
const diagnostics::paths::event_id_t * get_id_ptr() const
Definition checker-event.h:143
virtual bool is_return_p() const
Definition checker-event.h:134
virtual void prepare_for_emission(checker_path *, pending_diagnostic *pd, diagnostics::paths::event_id_t emission_id)
tree m_effective_fndecl
Definition checker-event.h:163
enum event_kind get_kind() const
Definition checker-event.h:124
int get_stack_depth() const final override
Definition checker-event.h:105
location_t m_loc
Definition checker-event.h:161
enum event_kind m_kind
Definition checker-event.h:159
tree m_original_fndecl
Definition checker-event.h:162
virtual bool is_function_entry_p() const
Definition checker-event.h:133
diagnostics::logical_locations::key m_logical_loc
Definition checker-event.h:168
diagnostics::paths::thread_id_t get_thread_id() const final override
Definition checker-event.h:113
void maybe_add_sarif_properties(diagnostics::sarif_builder &, diagnostics::sarif_object &thread_flow_loc_obj) const override
void set_location(location_t loc)
Definition checker-event.h:151
pending_diagnostic * m_pending_diagnostic
Definition checker-event.h:166
bool connect_to_next_event_p() const override
Definition checker-event.h:112
int get_original_stack_depth() const
Definition checker-event.h:127
location_t get_location() const final override
Definition checker-event.h:104
virtual bool is_call_p() const
Definition checker-event.h:132
std::unique_ptr< diagnostics::digraphs::digraph > maybe_make_diagnostic_state_graph(bool debug) const final override
tree get_fndecl() const
Definition checker-event.h:125
const checker_path * m_path
Definition checker-event.h:158
int m_effective_depth
Definition checker-event.h:165
int m_original_depth
Definition checker-event.h:164
meaning get_meaning() const override
void dump(pretty_printer *pp) const
Definition checker-path.h:32
custom_event(const event_loc_info &loc_info)
Definition checker-event.h:201
char * m_desc
Definition checker-event.h:192
~debug_event()
Definition checker-event.h:184
debug_event(const event_loc_info &loc_info, const char *desc)
Definition checker-event.h:178
void print_desc(pretty_printer &) const final override
void print_desc(pretty_printer &pp) const final override
Definition checker-event.h:538
end_cfg_edge_event(const exploded_edge &eedge, const event_loc_info &loc_info, const control_flow_op *op)
Definition checker-event.h:531
end_consolidated_cfg_edges_event(const event_loc_info &loc_info)
Definition checker-event.h:706
void print_desc(pretty_printer &pp) const final override
Definition checker-event.h:711
tree m_type
Definition checker-event.h:880
void print_desc(pretty_printer &pp) const final override
bool m_is_rethrow
Definition checker-event.h:881
explicit_throw_event(const event_loc_info &loc_info, const exploded_node *enode, const gcall &throw_call, tree type, bool is_rethrow)
Definition checker-event.h:866
Definition exploded-graph.h:335
Definition exploded-graph.h:206
const program_state * get_program_state() const final override
Definition checker-event.h:396
meaning get_meaning() const override
function_entry_event(const event_loc_info &loc_info, const program_state &state, const state_transition_at_call *state_trans)
Definition checker-event.h:381
bool is_function_entry_p() const final override
Definition checker-event.h:393
void print_desc(pretty_printer &pp) const override
void prepare_for_emission(checker_path *path, pending_diagnostic *pd, diagnostics::paths::event_id_t emission_id) final override
const state_transition_at_call * m_state_trans
Definition checker-event.h:411
const state_transition_at_call * get_state_transition_at_call() const
Definition checker-event.h:407
const program_state & m_state
Definition checker-event.h:410
meaning get_meaning() const override
void print_desc(pretty_printer &) const final override
inlined_call_event(location_t loc, tree apparent_callee_fndecl, tree apparent_caller_fndecl, int actual_depth, int stack_depth_adjustment)
Definition checker-event.h:723
tree m_apparent_callee_fndecl
Definition checker-event.h:742
tree m_apparent_caller_fndecl
Definition checker-event.h:743
Definition pending-diagnostic.h:258
~precanned_custom_event()
Definition checker-event.h:218
char * m_desc
Definition checker-event.h:226
void print_desc(pretty_printer &) const final override
precanned_custom_event(const event_loc_info &loc_info, const char *desc)
Definition checker-event.h:212
Definition program-state.h:224
tree m_capacity
Definition checker-event.h:353
void print_desc(pretty_printer &pp) const final override
region_creation_event_allocation_size(tree capacity, const event_loc_info &loc_info)
Definition checker-event.h:344
void print_desc(pretty_printer &pp) const final override
region_creation_event_capacity(tree capacity, const event_loc_info &loc_info)
Definition checker-event.h:323
tree m_capacity
Definition checker-event.h:334
region_creation_event_debug(const region *reg, tree capacity, const event_loc_info &loc_info)
Definition checker-event.h:362
tree m_capacity
Definition checker-event.h:373
const region * m_reg
Definition checker-event.h:372
void print_desc(pretty_printer &pp) const final override
enum memory_space m_mem_space
Definition checker-event.h:313
void print_desc(pretty_printer &pp) const final override
region_creation_event_memory_space(enum memory_space mem_space, const event_loc_info &loc_info)
Definition checker-event.h:303
region_creation_event(const event_loc_info &loc_info)
const supernode * m_dest_snode
Definition checker-event.h:673
const state_transition_at_return * m_state_trans
Definition checker-event.h:676
const call_and_return_op * m_call_and_return_op
Definition checker-event.h:674
critical_state m_critical_state
Definition checker-event.h:675
void record_critical_state(tree var, state_machine::state_t state)
Definition checker-event.h:666
void print_desc(pretty_printer &pp) const final override
bool is_return_p() const final override
const supernode * m_src_snode
Definition checker-event.h:672
return_event(const exploded_edge &eedge, const event_loc_info &loc_info, const state_transition_at_return *state_trans)
const exploded_edge & m_eedge
Definition checker-event.h:671
meaning get_meaning() const override
const program_state * get_program_state() const override
void prepare_for_emission(checker_path *path, pending_diagnostic *pd, diagnostics::paths::event_id_t emission_id) final override
const call_and_return_op * get_call_and_return_op() const
Definition checker-event.h:649
tree get_longjmp_caller() const
rewind_event(const exploded_edge *eedge, enum event_kind kind, const event_loc_info &loc_info, const rewind_info_t *rewind_info)
meaning get_meaning() const override
tree get_setjmp_caller() const
const exploded_edge * m_eedge
Definition checker-event.h:795
const rewind_info_t * m_rewind_info
Definition checker-event.h:792
const exploded_edge * get_eedge() const
Definition checker-event.h:783
rewind_from_longjmp_event(const exploded_edge *eedge, const event_loc_info &loc_info, const rewind_info_t *rewind_info)
Definition checker-event.h:804
void print_desc(pretty_printer &pp) const final override
Definition exploded-graph.h:457
void prepare_for_emission(checker_path *path, pending_diagnostic *pd, diagnostics::paths::event_id_t emission_id) final override
rewind_to_setjmp_event(const exploded_edge *eedge, const event_loc_info &loc_info, const rewind_info_t *rewind_info)
Definition checker-event.h:821
void print_desc(pretty_printer &pp) const final override
diagnostics::paths::event_id_t m_original_setjmp_event_id
Definition checker-event.h:836
meaning get_meaning() const override
const gcall & m_setjmp_call
Definition checker-event.h:769
void print_desc(pretty_printer &pp) const final override
void prepare_for_emission(checker_path *path, pending_diagnostic *pd, diagnostics::paths::event_id_t emission_id) final override
const exploded_node * m_enode
Definition checker-event.h:768
setjmp_event(const event_loc_info &loc_info, const exploded_node *enode, const gcall &setjmp_call)
Definition checker-event.h:751
bool connect_to_next_event_p() const final override
Definition checker-event.h:519
void print_desc(pretty_printer &pp) const override
start_cfg_edge_event(const exploded_edge &eedge, const event_loc_info &loc_info, const control_flow_op *op)
Definition checker-event.h:511
static bool should_print_expr_p(tree)
bool connect_to_next_event_p() const final override
Definition checker-event.h:694
meaning get_meaning() const override
start_consolidated_cfg_edges_event(const event_loc_info &loc_info, bool edge_sense)
Definition checker-event.h:685
bool m_edge_sense
Definition checker-event.h:697
void print_desc(pretty_printer &pp) const final override
state_machine::state_t m_to
Definition checker-event.h:449
state_machine::state_t m_from
Definition checker-event.h:448
void print_desc(pretty_printer &pp) const final override
const svalue * m_origin
Definition checker-event.h:450
const exploded_node * get_exploded_node() const
Definition checker-event.h:443
state_change_event(const event_loc_info &loc_info, const gimple *stmt, const state_machine &sm, const svalue *sval, state_machine::state_t from, state_machine::state_t to, const svalue *origin, const program_state &dst_state, const exploded_node *enode)
meaning get_meaning() const override
program_state m_dst_state
Definition checker-event.h:451
const state_machine & m_sm
Definition checker-event.h:446
const svalue * m_sval
Definition checker-event.h:447
const program_state * get_program_state() const final override
Definition checker-event.h:433
const exploded_node * m_enode
Definition checker-event.h:452
const gimple * m_stmt
Definition checker-event.h:445
const function * get_dest_function() const
Definition checker-event.h:438
const state_machine::state * state_t
Definition sm.h:63
Definition state-transition.h:99
Definition state-transition.h:126
const state_transition * m_state_trans
Definition checker-event.h:272
void prepare_for_emission(checker_path *path, pending_diagnostic *pd, diagnostics::paths::event_id_t emission_id) final override
void print_desc(pretty_printer &) const final override
state_transition_event(const event_loc_info &loc_info, const state_transition *state_trans)
Definition checker-event.h:256
Definition state-transition.h:31
statement_event(const gimple *stmt, tree fndecl, int depth, const program_state &dst_state)
void print_desc(pretty_printer &) const final override
const program_state * get_program_state() const final override
Definition checker-event.h:241
const gimple *const m_stmt
Definition checker-event.h:246
const program_state m_dst_state
Definition checker-event.h:247
void maybe_add_sarif_properties(diagnostics::sarif_builder &, diagnostics::sarif_object &thread_flow_loc_obj) const override
virtual const call_and_return_op * get_call_and_return_op() const
const program_state * get_program_state() const override
superedge_event(enum event_kind kind, const exploded_edge &eedge, const event_loc_info &loc_info)
const exploded_edge & m_eedge
Definition checker-event.h:479
bool should_filter_p(int verbosity) const
const superedge * m_sedge
Definition checker-event.h:480
Definition supergraph.h:281
Definition supergraph.h:224
const gcall & m_throw_call
Definition checker-event.h:857
meaning get_meaning() const override
throw_event(const event_loc_info &loc_info, const exploded_node *enode, const gcall &throw_call)
Definition checker-event.h:844
const exploded_node * m_enode
Definition checker-event.h:856
void print_desc(pretty_printer &pp) const final override
throw_from_call_to_external_fn_event(const event_loc_info &loc_info, const exploded_node *enode, const gcall &throw_call, tree fndecl)
Definition checker-event.h:891
tree m_fndecl
Definition checker-event.h:903
unwind_event(const event_loc_info &loc_info)
Definition checker-event.h:912
meaning get_meaning() const override
void print_desc(pretty_printer &pp) const final override
int m_num_frames
Definition checker-event.h:922
const program_state * get_program_state() const final override
std::unique_ptr< program_state > m_program_state
Definition checker-event.h:961
tree m_var
Definition checker-event.h:957
const exploded_node * get_exploded_node() const
Definition checker-event.h:952
const state_machine * m_sm
Definition checker-event.h:956
meaning get_meaning() const override
const exploded_node * m_enode
Definition checker-event.h:955
void print_desc(pretty_printer &pp) const final override
state_machine::state_t m_state
Definition checker-event.h:958
warning_event(const event_loc_info &loc_info, const exploded_node *enode, const state_machine *sm, tree var, state_machine::state_t state, const program_state *program_state_=nullptr)
Definition checker-event.h:933
Definition logical-locations.h:101
Definition sarif-sink.cc:784
Definition sarif-sink.h:151
Definition pretty-print.h:241
bool debug
Definition collect-utils.cc:34
static struct path_prefix cpath path
Definition collect2.cc:514
class edge_def * edge
Definition coretypes.h:369
union tree_node * tree
Definition coretypes.h:97
bool warning(diagnostics::option_id, const char *,...) ATTRIBUTE_GCC_DIAG(2
void final(rtx_insn *first, FILE *file, int optimize_p)
Definition final.cc:2009
struct state * state_t
Definition genautomata.cc:195
Definition access-diagram.h:30
event_kind
Definition checker-event.h:35
@ function_entry
Definition checker-event.h:41
@ throw_
Definition checker-event.h:54
@ call_
Definition checker-event.h:46
@ unwind
Definition checker-event.h:55
@ stmt
Definition checker-event.h:38
@ setjmp_
Definition checker-event.h:51
@ rewind_to_setjmp
Definition checker-event.h:53
@ start_consolidated_cfg_edges
Definition checker-event.h:48
@ start_cfg_edge
Definition checker-event.h:43
@ region_creation
Definition checker-event.h:39
@ inlined_call
Definition checker-event.h:50
@ state_change
Definition checker-event.h:42
@ rewind_from_longjmp
Definition checker-event.h:52
@ catch_
Definition checker-event.h:45
@ custom
Definition checker-event.h:37
@ end_cfg_edge
Definition checker-event.h:44
@ return_
Definition checker-event.h:47
@ end_consolidated_cfg_edges
Definition checker-event.h:49
const char * event_kind_to_string(enum event_kind ek)
memory_space
Definition region.h:33
int thread_id_t
Definition event-id.h:71
diagnostic_event_id_t event_id_t
Definition event-id.h:66
void pp_printf(pretty_printer *pp, const char *msg,...)
Definition pretty-print.cc:2683
void pp_string(pretty_printer *pp, const char *str)
Definition pretty-print.cc:2764
Definition checker-event.h:574
critical_state()
Definition checker-event.h:575
state_machine::state_t m_state
Definition checker-event.h:587
tree m_var
Definition checker-event.h:586
critical_state(tree var, state_machine::state_t state)
Definition checker-event.h:580
Definition event-loc-info.h:29
Definition function.h:249
Definition genautomata.cc:669
Definition gengtype.h:252
#define NULL
Definition system.h:50
#define gcc_assert(EXPR)
Definition system.h:817
#define NULL_TREE
Definition tree.h:318