GCC Middle and Back End API Reference
checker-event.h
Go to the documentation of this file.
1/* Subclasses of diagnostic_event for analyzer diagnostics.
2 Copyright (C) 2019-2024 Free Software Foundation, Inc.
3 Contributed by David Malcolm <dmalcolm@redhat.com>.
4
5This file is part of GCC.
6
7GCC is free software; you can redistribute it and/or modify it
8under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 3, or (at your option)
10any later version.
11
12GCC is distributed in the hope that it will be useful, but
13WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GCC; see the file COPYING3. If not see
19<http://www.gnu.org/licenses/>. */
20
21#ifndef GCC_ANALYZER_CHECKER_EVENT_H
22#define GCC_ANALYZER_CHECKER_EVENT_H
23
27
28namespace ana {
29
30/* An enum for discriminating between the concrete subclasses of
31 checker_event. */
32
53
54extern const char *event_kind_to_string (enum event_kind ek);
55
56/* Event subclasses.
57
58 The class hierarchy looks like this (using indentation to show
59 inheritance, and with event_kinds shown for the concrete subclasses):
60
61 diagnostic_event
62 checker_event
63 debug_event (EK_DEBUG)
64 custom_event (EK_CUSTOM)
65 precanned_custom_event
66 statement_event (EK_STMT)
67 region_creation_event (EK_REGION_CREATION)
68 function_entry_event (EK_FUNCTION_ENTRY)
69 state_change_event (EK_STATE_CHANGE)
70 superedge_event
71 cfg_edge_event
72 start_cfg_edge_event (EK_START_CFG_EDGE)
73 end_cfg_edge_event (EK_END_CFG_EDGE)
74 call_event (EK_CALL_EDGE)
75 return_edge (EK_RETURN_EDGE)
76 start_consolidated_cfg_edges_event (EK_START_CONSOLIDATED_CFG_EDGES)
77 end_consolidated_cfg_edges_event (EK_END_CONSOLIDATED_CFG_EDGES)
78 inlined_call_event (EK_INLINED_CALL)
79 setjmp_event (EK_SETJMP)
80 rewind_event
81 rewind_from_longjmp_event (EK_REWIND_FROM_LONGJMP)
82 rewind_to_setjmp_event (EK_REWIND_TO_SETJMP)
83 warning_event (EK_WARNING). */
84
85/* Abstract subclass of diagnostic_event; the base class for use in
86 checker_path (the analyzer's diagnostic_path subclass). */
87
89{
90public:
91 /* Implementation of diagnostic_event. */
92
93 location_t get_location () const final override { return m_loc; }
94 int get_stack_depth () const final override { return m_effective_depth; }
96 {
98 return &m_logical_loc;
99 else
100 return NULL;
101 }
102 meaning get_meaning () const override;
103 bool connect_to_next_event_p () const override { return false; }
105 {
106 return 0;
107 }
108
109 void
110 maybe_add_sarif_properties (sarif_object &thread_flow_loc_obj) const override;
111
112 /* Additional functionality. */
113 tree get_fndecl () const { return m_effective_fndecl; }
114
116
119 diagnostic_event_id_t emission_id);
120 virtual bool is_call_p () const { return false; }
121 virtual bool is_function_entry_p () const { return false; }
122 virtual bool is_return_p () const { return false; }
123
124 /* For use with %@. */
126 {
127 return &m_emission_id;
128 }
129
130 void dump (pretty_printer *pp) const;
131 void debug () const;
132
133 void set_location (location_t loc) { m_loc = loc; }
134
135protected:
137 const event_loc_info &loc_info);
138
139 public:
140 const enum event_kind m_kind;
141 protected:
142 location_t m_loc;
148 diagnostic_event_id_t m_emission_id; // only set once all pruning has occurred
150};
151
152/* A concrete event subclass for a purely textual event, for use in
153 debugging path creation and filtering. */
154
156{
157public:
158
159 debug_event (const event_loc_info &loc_info,
160 const char *desc)
161 : checker_event (EK_DEBUG, loc_info),
162 m_desc (xstrdup (desc))
163 {
164 }
166 {
167 free (m_desc);
168 }
169
170 void print_desc (pretty_printer &) const final override;
171
172private:
173 char *m_desc;
174};
175
176/* An abstract event subclass for custom events. These are not filtered,
177 as they are likely to be pertinent to the diagnostic. */
178
180{
181protected:
182 custom_event (const event_loc_info &loc_info)
183 : checker_event (EK_CUSTOM, loc_info)
184 {
185 }
186};
187
188/* A concrete custom_event subclass with a precanned message. */
189
191{
192public:
194 const char *desc)
195 : custom_event (loc_info),
196 m_desc (xstrdup (desc))
197 {
198 }
200 {
201 free (m_desc);
202 }
203
204 void print_desc (pretty_printer &) const final override;
205
206private:
207 char *m_desc;
208};
209
210/* A concrete event subclass describing the execution of a gimple statement,
211 for use at high verbosity levels when debugging paths. */
212
214{
215public:
216 statement_event (const gimple *stmt, tree fndecl, int depth,
217 const program_state &dst_state);
218
219 void print_desc (pretty_printer &) const final override;
220
221 const gimple * const m_stmt;
223};
224
225/* An abstract event subclass describing the creation of a region that
226 is significant for a diagnostic.
227
228 There are too many combinations to express region creation in one message,
229 so we emit multiple region_creation_event instances when each pertinent
230 region is created.
231
232 The events are created by pending_diagnostic's add_region_creation_events
233 vfunc, which by default creates a region_creation_event_memory_space, and
234 if a capacity is known, a region_creation_event_capacity, giving e.g.:
235 (1) region created on stack here
236 (2) capacity: 100 bytes
237 but this vfunc can be overridden to create other events if other wordings
238 are more appropriate foa a given pending_diagnostic. */
239
241{
242protected:
244};
245
246/* Concrete subclass of region_creation_event.
247 Generates a message based on the memory space of the region
248 e.g. "region created on stack here". */
249
251{
252public:
254 const event_loc_info &loc_info)
255 : region_creation_event (loc_info),
256 m_mem_space (mem_space)
257 {
258 }
259
260 void print_desc (pretty_printer &pp) const final override;
261
262private:
264};
265
266/* Concrete subclass of region_creation_event.
267 Generates a message based on the capacity of the region
268 e.g. "capacity: 100 bytes". */
269
271{
272public:
274 const event_loc_info &loc_info)
275 : region_creation_event (loc_info),
276 m_capacity (capacity)
277 {
279 }
280
281 void print_desc (pretty_printer &pp) const final override;
282
283private:
285};
286
287/* Concrete subclass of region_creation_event.
288 Generates a message based on the capacity of the region
289 e.g. "allocated 100 bytes here". */
290
292{
293public:
295 const event_loc_info &loc_info)
296 : region_creation_event (loc_info),
297 m_capacity (capacity)
298 {}
299
300 void print_desc (pretty_printer &pp) const final override;
301
302private:
304};
305
306/* Concrete subclass of region_creation_event.
307 Generates a debug message intended for analyzer developers. */
308
310{
311public:
313 const event_loc_info &loc_info)
314 : region_creation_event (loc_info),
315 m_reg (reg), m_capacity (capacity)
316 {
317 }
318
319 void print_desc (pretty_printer &pp) const final override;
320
321private:
322 const region *m_reg;
324};
325
326/* An event subclass describing the entry to a function. */
327
329{
330public:
332 : checker_event (EK_FUNCTION_ENTRY, loc_info)
333 {
334 }
335
337
338 void print_desc (pretty_printer &pp) const override;
339 meaning get_meaning () const override;
340
341 bool is_function_entry_p () const final override { return true; }
342};
343
344/* Subclass of checker_event describing a state change. */
345
347{
348public:
349 state_change_event (const supernode *node, const gimple *stmt,
350 int stack_depth,
351 const state_machine &sm,
352 const svalue *sval,
355 const svalue *origin,
356 const program_state &dst_state,
357 const exploded_node *enode);
358
359 void print_desc (pretty_printer &pp) const final override;
360 meaning get_meaning () const override;
361
363 {
365 }
366
367 const exploded_node *get_exploded_node () const { return m_enode; }
368
378};
379
380/* Subclass of checker_event; parent class for subclasses that relate to
381 a superedge. */
382
384{
385public:
386 void maybe_add_sarif_properties (sarif_object &thread_flow_loc_obj)
387 const override;
388
389 /* Mark this edge event as being either an interprocedural call or
390 return in which VAR is in STATE, and that this is critical to the
391 diagnostic (so that print_desc can attempt to get a better description
392 from any pending_diagnostic). */
398
400
401 bool should_filter_p (int verbosity) const;
402
403 protected:
404 superedge_event (enum event_kind kind, const exploded_edge &eedge,
405 const event_loc_info &loc_info);
406
407 public:
412};
413
414/* An abstract event subclass for when a CFG edge is followed; it has two
415 subclasses, representing the start of the edge and the end of the
416 edge, which come in pairs. */
417
419{
420public:
421 meaning get_meaning () const override;
422
424
425 protected:
426 cfg_edge_event (enum event_kind kind, const exploded_edge &eedge,
427 const event_loc_info &loc_info);
428};
429
430/* A concrete event subclass for the start of a CFG edge
431 e.g. "following 'false' branch...'. */
432
434{
435public:
437 const event_loc_info &loc_info)
438 : cfg_edge_event (EK_START_CFG_EDGE, eedge, loc_info)
439 {
440 }
441
442 void print_desc (pretty_printer &pp) const override;
443 bool connect_to_next_event_p () const final override { return true; }
444
445protected:
446 label_text maybe_describe_condition (bool can_colorize) const;
447
448private:
449 static label_text maybe_describe_condition (bool can_colorize,
450 tree lhs,
451 enum tree_code op,
452 tree rhs);
454};
455
456/* A concrete event subclass for the end of a CFG edge
457 e.g. "...to here'. */
458
460{
461public:
463 const event_loc_info &loc_info)
464 : cfg_edge_event (EK_END_CFG_EDGE, eedge, loc_info)
465 {
466 }
467
468 void print_desc (pretty_printer &pp) const final override
469 {
470 pp_string (&pp, "...to here");
471 }
472};
473
474/* A concrete event subclass for an interprocedural call. */
475
477{
478public:
480 const event_loc_info &loc_info);
481
482 void print_desc (pretty_printer &pp) const override;
483 meaning get_meaning () const override;
484
485 bool is_call_p () const final override;
486
487protected:
490
493};
494
495/* A concrete event subclass for an interprocedural return. */
496
498{
499public:
501 const event_loc_info &loc_info);
502
503 void print_desc (pretty_printer &pp) const final override;
504 meaning get_meaning () const override;
505
506 bool is_return_p () const final override;
507
510};
511
512/* A concrete event subclass for the start of a consolidated run of CFG
513 edges all either TRUE or FALSE e.g. "following 'false' branch...'. */
514
516{
517public:
519 bool edge_sense)
521 m_edge_sense (edge_sense)
522 {
523 }
524
525 void print_desc (pretty_printer &pp) const final override;
526 meaning get_meaning () const override;
527 bool connect_to_next_event_p () const final override { return true; }
528
529 private:
531};
532
533/* A concrete event subclass for the end of a consolidated run of
534 CFG edges e.g. "...to here'. */
535
537{
538public:
543
544 void print_desc (pretty_printer &pp) const final override
545 {
546 pp_string (&pp, "...to here");
547 }
548};
549
550/* A concrete event subclass for describing an inlined call event
551 e.g. "inlined call to 'callee' from 'caller'". */
552
554{
555public:
556 inlined_call_event (location_t loc,
557 tree apparent_callee_fndecl,
558 tree apparent_caller_fndecl,
559 int actual_depth,
560 int stack_depth_adjustment)
562 event_loc_info (loc,
563 apparent_caller_fndecl,
564 actual_depth + stack_depth_adjustment)),
565 m_apparent_callee_fndecl (apparent_callee_fndecl),
566 m_apparent_caller_fndecl (apparent_caller_fndecl)
567 {
568 gcc_assert (LOCATION_BLOCK (loc) == NULL);
569 }
570
571 void print_desc (pretty_printer &) const final override;
572 meaning get_meaning () const override;
573
574private:
577};
578
579/* A concrete event subclass for a setjmp or sigsetjmp call. */
580
582{
583public:
584 setjmp_event (const event_loc_info &loc_info,
585 const exploded_node *enode,
586 const gcall *setjmp_call)
587 : checker_event (EK_SETJMP, loc_info),
588 m_enode (enode), m_setjmp_call (setjmp_call)
589 {
590 }
591
592 void print_desc (pretty_printer &pp) const final override;
593
596 diagnostic_event_id_t emission_id) final override;
597
598private:
601};
602
603/* An abstract event subclass for rewinding from a longjmp to a setjmp
604 (or siglongjmp to sigsetjmp).
605
606 Base class for two from/to subclasses, showing the two halves of the
607 rewind. */
608
610{
611public:
614 const exploded_edge *get_eedge () const { return m_eedge; }
615
616 protected:
618 enum event_kind kind,
619 const event_loc_info &loc_info,
620 const rewind_info_t *rewind_info);
622
623 private:
625};
626
627/* A concrete event subclass for rewinding from a longjmp to a setjmp,
628 showing the longjmp (or siglongjmp). */
629
631{
632public:
634 const event_loc_info &loc_info,
635 const rewind_info_t *rewind_info)
636 : rewind_event (eedge, EK_REWIND_FROM_LONGJMP, loc_info,
637 rewind_info)
638 {
639 }
640
641 void print_desc (pretty_printer &pp) const final override;
642};
643
644/* A concrete event subclass for rewinding from a longjmp to a setjmp,
645 showing the setjmp (or sigsetjmp). */
646
648{
649public:
651 const event_loc_info &loc_info,
652 const rewind_info_t *rewind_info)
653 : rewind_event (eedge, EK_REWIND_TO_SETJMP, loc_info,
654 rewind_info)
655 {
656 }
657
658 void print_desc (pretty_printer &pp) const final override;
659
662 diagnostic_event_id_t emission_id) final override;
663
664private:
666};
667
668/* Concrete subclass of checker_event for use at the end of a path:
669 a repeat of the warning message at the end of the path (perhaps with
670 references to pertinent events that occurred on the way), at the point
671 where the problem occurs. */
672
674{
675public:
677 const exploded_node *enode,
678 const state_machine *sm,
680 : checker_event (EK_WARNING, loc_info),
681 m_enode (enode),
682 m_sm (sm), m_var (var), m_state (state)
683 {
684 }
685
686 void print_desc (pretty_printer &pp) const final override;
687 meaning get_meaning () const override;
688
689 const exploded_node *get_exploded_node () const { return m_enode; }
690
691private:
696};
697
698} // namespace ana
699
700#endif /* GCC_ANALYZER_CHECKER_EVENT_H */
state
Definition cfgbuild.cc:168
Definition checker-event.h:477
void print_desc(pretty_printer &pp) const override
meaning get_meaning() const override
call_event(const exploded_edge &eedge, const event_loc_info &loc_info)
bool is_call_p() const final override
tree get_callee_fndecl() const
const supernode * m_dest_snode
Definition checker-event.h:492
tree get_caller_fndecl() const
const supernode * m_src_snode
Definition checker-event.h:491
Definition supergraph.h:393
Definition checker-event.h:419
meaning get_meaning() const override
cfg_edge_event(enum event_kind kind, const exploded_edge &eedge, const event_loc_info &loc_info)
const cfg_superedge & get_cfg_superedge() const
Definition supergraph.h:515
Definition checker-event.h:89
virtual void prepare_for_emission(checker_path *, pending_diagnostic *pd, diagnostic_event_id_t emission_id)
checker_event(enum event_kind kind, const event_loc_info &loc_info)
void debug() const
virtual bool is_return_p() const
Definition checker-event.h:122
tree m_effective_fndecl
Definition checker-event.h:144
diagnostic_event_id_t m_emission_id
Definition checker-event.h:148
int get_stack_depth() const final override
Definition checker-event.h:94
location_t m_loc
Definition checker-event.h:142
const diagnostic_event_id_t * get_id_ptr() const
Definition checker-event.h:125
enum event_kind m_kind
Definition checker-event.h:140
tree m_original_fndecl
Definition checker-event.h:143
virtual bool is_function_entry_p() const
Definition checker-event.h:121
const logical_location * get_logical_location() const final override
Definition checker-event.h:95
tree_logical_location m_logical_loc
Definition checker-event.h:149
void set_location(location_t loc)
Definition checker-event.h:133
pending_diagnostic * m_pending_diagnostic
Definition checker-event.h:147
bool connect_to_next_event_p() const override
Definition checker-event.h:103
int get_original_stack_depth() const
Definition checker-event.h:115
location_t get_location() const final override
Definition checker-event.h:93
void maybe_add_sarif_properties(sarif_object &thread_flow_loc_obj) const override
virtual bool is_call_p() const
Definition checker-event.h:120
tree get_fndecl() const
Definition checker-event.h:113
int m_effective_depth
Definition checker-event.h:146
int m_original_depth
Definition checker-event.h:145
diagnostic_thread_id_t get_thread_id() const final override
Definition checker-event.h:104
meaning get_meaning() const override
void dump(pretty_printer *pp) const
Definition checker-path.h:32
Definition checker-event.h:180
custom_event(const event_loc_info &loc_info)
Definition checker-event.h:182
Definition checker-event.h:156
char * m_desc
Definition checker-event.h:173
~debug_event()
Definition checker-event.h:165
debug_event(const event_loc_info &loc_info, const char *desc)
Definition checker-event.h:159
void print_desc(pretty_printer &) const final override
Definition checker-event.h:460
end_cfg_edge_event(const exploded_edge &eedge, const event_loc_info &loc_info)
Definition checker-event.h:462
void print_desc(pretty_printer &pp) const final override
Definition checker-event.h:468
Definition checker-event.h:537
end_consolidated_cfg_edges_event(const event_loc_info &loc_info)
Definition checker-event.h:539
void print_desc(pretty_printer &pp) const final override
Definition checker-event.h:544
Definition exploded-graph.h:381
Definition exploded-graph.h:203
Definition checker-event.h:329
function_entry_event(const program_point &dst_point)
meaning get_meaning() const override
bool is_function_entry_p() const final override
Definition checker-event.h:341
void print_desc(pretty_printer &pp) const override
function_entry_event(const event_loc_info &loc_info)
Definition checker-event.h:331
Definition checker-event.h:554
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:556
tree m_apparent_callee_fndecl
Definition checker-event.h:575
tree m_apparent_caller_fndecl
Definition checker-event.h:576
Definition pending-diagnostic.h:190
Definition checker-event.h:191
~precanned_custom_event()
Definition checker-event.h:199
char * m_desc
Definition checker-event.h:207
void print_desc(pretty_printer &) const final override
precanned_custom_event(const event_loc_info &loc_info, const char *desc)
Definition checker-event.h:193
Definition program-point.h:175
Definition program-state.h:209
const function * get_current_function() const
Definition checker-event.h:292
tree m_capacity
Definition checker-event.h:303
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:294
Definition checker-event.h:271
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:273
tree m_capacity
Definition checker-event.h:284
Definition checker-event.h:310
region_creation_event_debug(const region *reg, tree capacity, const event_loc_info &loc_info)
Definition checker-event.h:312
tree m_capacity
Definition checker-event.h:323
const region * m_reg
Definition checker-event.h:322
void print_desc(pretty_printer &pp) const final override
Definition checker-event.h:251
enum memory_space m_mem_space
Definition checker-event.h:263
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:253
Definition checker-event.h:241
region_creation_event(const event_loc_info &loc_info)
Definition region.h:126
Definition checker-event.h:498
return_event(const exploded_edge &eedge, const event_loc_info &loc_info)
void print_desc(pretty_printer &pp) const final override
bool is_return_p() const final override
meaning get_meaning() const override
Definition checker-event.h:610
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)
tree get_setjmp_caller() const
const exploded_edge * m_eedge
Definition checker-event.h:624
const rewind_info_t * m_rewind_info
Definition checker-event.h:621
const exploded_edge * get_eedge() const
Definition checker-event.h:614
Definition checker-event.h:631
rewind_from_longjmp_event(const exploded_edge *eedge, const event_loc_info &loc_info, const rewind_info_t *rewind_info)
Definition checker-event.h:633
void print_desc(pretty_printer &pp) const final override
Definition exploded-graph.h:457
Definition checker-event.h:648
void prepare_for_emission(checker_path *path, pending_diagnostic *pd, diagnostic_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:650
void print_desc(pretty_printer &pp) const final override
diagnostic_event_id_t m_original_setjmp_event_id
Definition checker-event.h:665
Definition checker-event.h:582
void print_desc(pretty_printer &pp) const final override
setjmp_event(const event_loc_info &loc_info, const exploded_node *enode, const gcall *setjmp_call)
Definition checker-event.h:584
const gcall * m_setjmp_call
Definition checker-event.h:600
void prepare_for_emission(checker_path *path, pending_diagnostic *pd, diagnostic_event_id_t emission_id) final override
const exploded_node * m_enode
Definition checker-event.h:599
Definition checker-event.h:434
bool connect_to_next_event_p() const final override
Definition checker-event.h:443
void print_desc(pretty_printer &pp) const override
static label_text maybe_describe_condition(bool can_colorize, tree lhs, enum tree_code op, tree rhs)
start_cfg_edge_event(const exploded_edge &eedge, const event_loc_info &loc_info)
Definition checker-event.h:436
label_text maybe_describe_condition(bool can_colorize) const
static bool should_print_expr_p(tree)
Definition checker-event.h:516
bool connect_to_next_event_p() const final override
Definition checker-event.h:527
meaning get_meaning() const override
start_consolidated_cfg_edges_event(const event_loc_info &loc_info, bool edge_sense)
Definition checker-event.h:518
bool m_edge_sense
Definition checker-event.h:530
void print_desc(pretty_printer &pp) const final override
Definition checker-event.h:347
state_machine::state_t m_to
Definition checker-event.h:374
state_machine::state_t m_from
Definition checker-event.h:373
void print_desc(pretty_printer &pp) const final override
const svalue * m_origin
Definition checker-event.h:375
state_change_event(const supernode *node, const gimple *stmt, int stack_depth, 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)
const exploded_node * get_exploded_node() const
Definition checker-event.h:367
meaning get_meaning() const override
const supernode * m_node
Definition checker-event.h:369
program_state m_dst_state
Definition checker-event.h:376
const state_machine & m_sm
Definition checker-event.h:371
const svalue * m_sval
Definition checker-event.h:372
const exploded_node * m_enode
Definition checker-event.h:377
const gimple * m_stmt
Definition checker-event.h:370
const function * get_dest_function() const
Definition checker-event.h:362
Definition sm.h:45
Definition sm.h:40
Definition checker-event.h:214
statement_event(const gimple *stmt, tree fndecl, int depth, const program_state &dst_state)
void print_desc(pretty_printer &) const final override
const gimple *const m_stmt
Definition checker-event.h:221
const program_state m_dst_state
Definition checker-event.h:222
Definition checker-event.h:384
state_machine::state_t m_critical_state
Definition checker-event.h:411
superedge_event(enum event_kind kind, const exploded_edge &eedge, const event_loc_info &loc_info)
const callgraph_superedge & get_callgraph_superedge() const
tree m_var
Definition checker-event.h:410
const exploded_edge & m_eedge
Definition checker-event.h:408
bool should_filter_p(int verbosity) const
void record_critical_state(tree var, state_machine::state_t state)
Definition checker-event.h:393
void maybe_add_sarif_properties(sarif_object &thread_flow_loc_obj) const override
const superedge * m_sedge
Definition checker-event.h:409
Definition supergraph.h:314
Definition supergraph.h:235
Definition svalue.h:92
Definition checker-event.h:674
tree m_var
Definition checker-event.h:694
const exploded_node * get_exploded_node() const
Definition checker-event.h:689
const state_machine * m_sm
Definition checker-event.h:693
meaning get_meaning() const override
const exploded_node * m_enode
Definition checker-event.h:692
void print_desc(pretty_printer &pp) const final override
state_machine::state_t m_state
Definition checker-event.h:695
warning_event(const event_loc_info &loc_info, const exploded_node *enode, const state_machine *sm, tree var, state_machine::state_t state)
Definition checker-event.h:676
Definition diagnostic-event-id.h:37
Definition diagnostic-path.h:70
Definition logical-location.h:55
Definition pretty-print.h:241
Definition diagnostic-format-sarif.h:84
Definition tree-logical-location.h:43
union tree_node * tree
Definition coretypes.h:97
int diagnostic_thread_id_t
Definition diagnostic-event-id.h:70
void final(rtx_insn *first, FILE *file, int optimize_p)
Definition final.cc:2004
free(str)
tree_code
Definition genmatch.cc:992
#define LOCATION_BLOCK(LOC)
Definition input.h:187
Definition access-diagram.h:30
event_kind
Definition checker-event.h:34
@ EK_STATE_CHANGE
Definition checker-event.h:40
@ EK_END_CONSOLIDATED_CFG_EDGES
Definition checker-event.h:46
@ EK_REWIND_TO_SETJMP
Definition checker-event.h:50
@ EK_SETJMP
Definition checker-event.h:48
@ EK_WARNING
Definition checker-event.h:51
@ EK_STMT
Definition checker-event.h:37
@ EK_CALL_EDGE
Definition checker-event.h:43
@ EK_FUNCTION_ENTRY
Definition checker-event.h:39
@ EK_CUSTOM
Definition checker-event.h:36
@ EK_START_CONSOLIDATED_CFG_EDGES
Definition checker-event.h:45
@ EK_START_CFG_EDGE
Definition checker-event.h:41
@ EK_DEBUG
Definition checker-event.h:35
@ EK_REWIND_FROM_LONGJMP
Definition checker-event.h:49
@ EK_RETURN_EDGE
Definition checker-event.h:44
@ EK_INLINED_CALL
Definition checker-event.h:47
@ EK_REGION_CREATION
Definition checker-event.h:38
@ EK_END_CFG_EDGE
Definition checker-event.h:42
const char * event_kind_to_string(enum event_kind ek)
memory_space
Definition region.h:32
void pp_string(pretty_printer *pp, const char *str)
Definition pretty-print.cc:2653
Definition event-loc-info.h:29
Definition diagnostic-path.h:114
Definition function.h:249
Definition gimple.h:352
Definition gimple.h:221
Definition genautomata.cc:669
#define NULL
Definition system.h:50
#define gcc_assert(EXPR)
Definition system.h:814