21#ifndef GCC_ANALYZER_COMMON_H
22#define GCC_ANALYZER_COMMON_H
39#include "rich-location.h"
56 class constant_svalue;
58 class poisoned_svalue;
64 class repeated_svalue;
65 class bits_within_svalue;
66 class unmergeable_svalue;
67 class placeholder_svalue;
68 class widening_svalue;
69 class compound_svalue;
70 class conjured_svalue;
71 class asm_output_svalue;
72 class const_fn_result_svalue;
122class exploded_cluster;
155extern int tree_cmp (
const void *p1,
const void *p2);
180 return (
m_tree == other.m_tree
226 const svalue *num_bytes_sval);
372 std::unique_ptr<known_function>) = 0;
401 const char *&out_color)
const;
440 virtual void bifurcate (std::unique_ptr<custom_edge_info> info) = 0;
455extern std::unique_ptr<json::value>
458extern std::unique_ptr<json::value>
461extern std::unique_ptr<json::value>
464extern std::unique_ptr<json::value>
487 unsigned int num_args,
488 bool look_in_std =
false);
491 const gcall &call,
unsigned int num_args);
495 const gcall &call,
unsigned int num_args);
509 unsigned HOST_WIDE_INT n,
510 const char *singular_fmt,
511 const char *plural_fmt, ...);
528template <
typename Type>
545template <
typename Type>
558 static inline bool is_deleted (Type t) {
return t.is_deleted (); }
559 static inline bool is_empty (Type t) {
return t.is_empty (); }
579 for (
typename inner_map_t::iterator iter =
m_inner_map.begin ();
581 delete (*iter).second;
612#pragma GCC diagnostic ignored "-Wformat-diag"
Definition analysis-plan.h:35
Definition constraint-manager.h:178
virtual enum built_in_function builtin_code() const =0
const builtin_known_function * dyn_cast_builtin_kf() const final override
Definition common.h:332
tree builtin_decl() const
Definition common.h:326
Definition call-details.h:31
Definition call-summary.h:68
Definition call-summary.h:34
Definition checker-event.h:98
Definition checker-path.h:32
Definition constraint-manager.h:410
virtual bool update_state(program_state *state, const exploded_edge *eedge, region_model_context *ctxt) const
virtual void get_dot_attrs(const char *&out_style, const char *&out_color) const
virtual void add_events_to_path(checker_path *emission_path, const exploded_edge &eedge, pending_diagnostic &pd) const =0
virtual bool update_model(region_model *model, const exploded_edge *eedge, region_model_context *ctxt) const =0
virtual exploded_node * create_enode(exploded_graph &eg, const program_point &point, program_state &&state, exploded_node *enode_for_diag, region_model_context *ctxt) const
virtual void print(pretty_printer *pp) const =0
virtual ~custom_edge_info()
Definition common.h:394
Definition region-model.h:1334
Definition constraint-manager.h:240
Definition exploded-graph.h:335
Definition exploded-graph.h:783
Definition exploded-graph.h:206
Definition exploded-graph.h:932
Definition program-state.h:34
Definition exploded-graph.h:960
Definition exploded-graph.h:980
Definition feasible-graph.h:84
Definition exploded-graph.h:40
bool matches_call_types_p(const call_details &) const final override
Definition common.h:340
Definition known-function-manager.h:41
virtual void impl_call_post(const call_details &) const
Definition common.h:311
virtual void impl_call_pre(const call_details &) const
Definition common.h:307
virtual bool matches_call_types_p(const call_details &cd) const =0
virtual const builtin_known_function * dyn_cast_builtin_kf() const
Definition common.h:317
virtual ~known_function()
Definition common.h:296
virtual void check_any_preconditions(const call_details &) const
Definition common.h:302
Definition analyzer-logging.h:34
virtual bool terminate_path_p() const =0
virtual void bifurcate(std::unique_ptr< custom_edge_info > info)=0
virtual void terminate_path()=0
virtual ~path_context()
Definition common.h:437
bool operator==(const path_var &other) const
Definition common.h:178
int m_stack_depth
Definition common.h:192
path_var(tree t, int stack_depth)
Definition common.h:172
void dump(pretty_printer *pp) const
tree m_tree
Definition common.h:191
Definition pending-diagnostic.h:189
Definition pending-diagnostic.h:435
virtual void register_state_machine(std::unique_ptr< state_machine >)=0
virtual logger * get_logger() const =0
virtual void register_known_function(const char *name, std::unique_ptr< known_function >)=0
Definition program-point.h:54
Definition program-state.h:224
void impl_call_pre(const call_details &cd) const override
Definition region-model-reachability.h:36
Definition region-model.h:768
Definition region-model-manager.h:32
Definition region-model.h:299
bit_offset_t get_bit_offset() const
Definition common.h:233
bool symbolic_p() const
Definition common.h:231
const region * get_base_region() const
Definition common.h:228
bit_offset_t m_offset
Definition common.h:276
static region_offset make_byte_offset(const region *base_region, const svalue *num_bytes_sval)
const svalue * m_sym_offset
Definition common.h:277
static region_offset make_concrete(const region *base_region, bit_offset_t offset)
Definition common.h:215
void dump_to_pp(pretty_printer *pp, bool) const
region_offset()
Definition common.h:210
const svalue * calc_symbolic_byte_offset(region_model_manager *mgr) const
region_offset(const region *base_region, bit_offset_t offset, const svalue *sym_offset)
Definition common.h:270
bool operator==(const region_offset &other) const
Definition common.h:259
const svalue & calc_symbolic_bit_offset(region_model_manager *mgr) const
const region * m_base_region
Definition common.h:275
bool get_concrete_byte_offset(byte_offset_t *out) const
Definition common.h:239
static region_offset make_symbolic(const region *base_region, const svalue *sym_offset)
Definition common.h:220
const svalue * get_symbolic_byte_offset() const
Definition common.h:250
bool concrete_p() const
Definition common.h:230
Definition region-model.h:1274
Definition exploded-graph.h:447
Definition diagnostic-manager.h:79
Definition program-state.h:92
Definition checker-event.h:382
Definition state-purge.h:31
Definition state-purge.h:152
Definition state-purge.h:119
Definition region-model.h:223
Definition checker-event.h:877
~auto_cfun()
Definition common.h:523
auto_cfun(function *fun)
Definition common.h:522
inner_map_t::iterator iterator
Definition common.h:573
inner_map_t m_inner_map
Definition common.h:606
T * get(const key_t &k) const
Definition common.h:586
T::key_t key_t
Definition common.h:570
~consolidation_map()
Definition common.h:577
iterator begin() const
Definition common.h:602
T instance_t
Definition common.h:571
hash_map< key_t, instance_t * > inner_map_t
Definition common.h:572
void put(const key_t &k, T *instance)
Definition common.h:595
size_t elements() const
Definition common.h:600
iterator end() const
Definition common.h:603
Definition genmatch.cc:1506
Definition graphviz.h:385
Definition pretty-print.h:241
Definition lra-spills.cc:101
bool is_named_call_p(const_tree fndecl, const char *funcname)
bool is_cxa_rethrow_p(const gcall &call)
bool is_std_function_p(const_tree fndecl)
bool is_placement_new_p(const gcall &call)
bool is_setjmp_call_p(const gcall &call)
void sorry_no_analyzer()
Definition analyzer-pass.cc:104
bool is_std_named_call_p(const_tree fndecl, const char *funcname)
label_text make_label_text_n(bool can_colorize, unsigned HOST_WIDE_INT n, const char *singular_fmt, const char *plural_fmt,...)
bool is_cxa_end_catch_p(const gcall &call)
bool is_cxa_throw_p(const gcall &call)
bool fndecl_has_gimple_body_p(tree fndecl)
label_text make_label_text(bool can_colorize, const char *fmt,...)
const char * get_user_facing_name(const gcall &call)
bool is_special_named_call_p(const gcall &call, const char *funcname, unsigned int num_args, bool look_in_std=false)
void register_analyzer_pass()
bool is_longjmp_call_p(const gcall &call)
const union tree_node * const_tree
Definition coretypes.h:98
union tree_node * tree
Definition coretypes.h:97
void final(rtx_insn *first, FILE *file, int optimize_p)
Definition final.cc:2009
void push_cfun(struct function *new_cfun)
Definition function.cc:4756
void pop_cfun(void)
Definition function.cc:4782
static struct token T
Definition gengtype-parse.cc:45
static void record_type(type_p type)
Definition gengtype-state.cc:1426
built_in_function
Definition genmatch.cc:1009
tree_code
Definition genmatch.cc:1002
Definition access-diagram.h:30
bool compat_types_p(tree src_type, tree dst_type)
void register_known_functions_lang_cp(known_function_manager &kfm)
void register_known_functions(known_function_manager &kfm, region_model_manager &rmm)
std::unique_ptr< json::value > byte_offset_to_json(const byte_offset_t &offset)
std::unique_ptr< json::value > bit_offset_to_json(const bit_offset_t &offset)
offset_int byte_size_t
Definition common.h:198
@ stmt
Definition checker-event.h:38
@ state_change
Definition checker-event.h:41
bool operator>(const region_offset &, const region_offset &)
offset_int bit_offset_t
Definition common.h:195
tree fixup_tree_for_diagnostic(tree)
void dump_tree(pretty_printer *pp, tree t)
bool operator>=(const region_offset &, const region_offset &)
tree get_string_cst_size(const_tree string_cst)
bool operator<(const region_offset &, const region_offset &)
void register_known_analyzer_functions(known_function_manager &kfm)
access_direction
Definition common.h:379
@ read
Definition common.h:380
@ write
Definition common.h:381
bool operator<=(const region_offset &, const region_offset &)
tree get_field_at_bit_offset(tree record_type, bit_offset_t bit_offset)
void print_expr_for_user(pretty_printer *pp, tree t)
tristate compare_constants(tree lhs_const, enum tree_code op, tree rhs_const)
tree get_stashed_constant_by_name(const char *name)
bool int_size_in_bits(const_tree type, bit_size_t *out)
std::unique_ptr< json::value > tree_to_json(tree node)
tree get_ssa_default_def(const function &fun, tree var)
std::unique_ptr< json::value > diagnostic_event_id_to_json(const diagnostics::paths::event_id_t &)
offset_int byte_offset_t
Definition common.h:197
location_t get_stmt_location(const gimple *stmt, function *fun)
const svalue * strip_types(const svalue *sval, region_model_manager &mgr)
FILE * get_or_create_any_logfile()
void dump_quoted_tree(pretty_printer *pp, tree t)
void log_stashed_constants(logger *logger)
offset_int bit_size_t
Definition common.h:196
int tree_cmp(const void *p1, const void *p2)
tree remove_ssa_names(tree expr)
tree get_diagnostic_tree_for_gassign(const gassign *)
hash_set< const svalue * > svalue_set
Definition common.h:73
void register_varargs_builtins(known_function_manager &kfm)
void register_known_fd_functions(known_function_manager &kfm)
int readability_comparator(const void *p1, const void *p2)
bool useful_location_p(location_t loc)
Definition common.h:160
void register_known_file_functions(known_function_manager &kfm)
void print_quoted_type(pretty_printer *pp, tree t)
Definition custom-sarif-properties/state-graphs.h:33
diagnostic_event_id_t event_id_t
Definition event-id.h:66
Definition constraint-manager.h:123
Definition event-loc-info.h:29
Definition pending-diagnostic.h:37
Definition region-model.h:1224
Definition diagnostic-manager.h:35
Definition exploded-graph.h:658
Definition tree-loop-distribution.cc:240
Definition function.h:249
static void mark_empty(Type &t)
Definition common.h:557
static hashval_t hash(value_type v)
Definition common.h:550
Type compare_type
Definition common.h:549
Type value_type
Definition common.h:548
static bool equal(const value_type &existing, const value_type &candidate)
Definition common.h:551
static void mark_deleted(Type &t)
Definition common.h:556
static bool is_empty(Type t)
Definition common.h:559
static bool is_deleted(Type t)
Definition common.h:558
static void mark_deleted(Type &)
Type compare_type
Definition common.h:532
static bool is_empty(Type)
static bool equal(const value_type &existing, const value_type &candidate)
static bool is_deleted(Type)
Type value_type
Definition common.h:531
static hashval_t hash(value_type)
static void mark_empty(Type &)
Definition genautomata.cc:669
Definition gengtype.h:252
Definition hash-traits.h:75
#define gcc_assert(EXPR)
Definition system.h:817
#define bool
Definition system.h:889
@ END_BUILTINS
Definition tree-core.h:3548
static tree candidate(unsigned uid)
Definition tree-sra.cc:326
static control_dependences * cd
Definition tree-ssa-dce.cc:104
#define NULL_TREE
Definition tree.h:318