21#ifndef GCC_ANALYZER_ANALYZER_H
22#define GCC_ANALYZER_ANALYZER_H
24#include "rich-location.h"
113class exploded_cluster;
145extern int tree_cmp (
const void *p1,
const void *p2);
210 const svalue *num_bytes_sval);
347 std::unique_ptr<known_function>) = 0;
404 virtual void bifurcate (std::unique_ptr<custom_edge_info> info) = 0;
419extern std::unique_ptr<json::value>
422extern std::unique_ptr<json::value>
425extern std::unique_ptr<json::value>
428extern std::unique_ptr<json::value>
451 unsigned int num_args,
452 bool look_in_std =
false);
455 const gcall *call,
unsigned int num_args);
459 const gcall *call,
unsigned int num_args);
470 unsigned HOST_WIDE_INT n,
471 const char *singular_fmt,
472 const char *plural_fmt, ...);
489template <
typename Type>
506template <
typename Type>
519 static inline bool is_deleted (Type t) {
return t.is_deleted (); }
520 static inline bool is_empty (Type t) {
return t.is_empty (); }
540 for (
typename inner_map_t::iterator iter =
m_inner_map.begin ();
542 delete (*iter).second;
573#pragma GCC diagnostic ignored "-Wformat-diag"
bool is_named_call_p(const_tree fndecl, const char *funcname)
const char * get_user_facing_name(const gcall *call)
bool is_std_function_p(const_tree fndecl)
void sorry_no_analyzer()
Definition analyzer-pass.cc:109
bool is_longjmp_call_p(const gcall *call)
bool is_std_named_call_p(const_tree fndecl, const char *funcname)
bool is_setjmp_call_p(const gcall *call)
bool is_special_named_call_p(const gcall *call, const char *funcname, unsigned int num_args, bool look_in_std=false)
label_text make_label_text_n(bool can_colorize, unsigned HOST_WIDE_INT n, const char *singular_fmt, const char *plural_fmt,...)
bool fndecl_has_gimple_body_p(tree fndecl)
label_text make_label_text(bool can_colorize, const char *fmt,...)
bool is_placement_new_p(const gcall *call)
void register_analyzer_pass()
Definition analysis-plan.h:35
Definition constraint-manager.h:181
Definition analyzer.h:298
virtual enum built_in_function builtin_code() const =0
const builtin_known_function * dyn_cast_builtin_kf() const final override
Definition analyzer.h:307
tree builtin_decl() const
Definition analyzer.h:301
Definition call-details.h:29
Definition call-summary.h:68
Definition call-summary.h:34
Definition supergraph.h:446
Definition supergraph.h:393
Definition supergraph.h:515
Definition checker-event.h:89
Definition checker-path.h:32
Definition constraint-manager.h:425
Definition analyzer.h:367
virtual bool update_state(program_state *state, const exploded_edge *eedge, region_model_context *ctxt) const
virtual bool update_model(region_model *model, const exploded_edge *eedge, region_model_context *ctxt) const =0
virtual void print(pretty_printer *pp) const =0
virtual void add_events_to_path(checker_path *emission_path, const exploded_edge &eedge) const =0
virtual ~custom_edge_info()
Definition analyzer.h:369
Definition region-model.h:1241
Definition constraint-manager.h:255
Definition exploded-graph.h:381
Definition exploded-graph.h:791
Definition exploded-graph.h:203
Definition exploded-graph.h:947
Definition program-state.h:31
Definition exploded-graph.h:975
Definition feasible-graph.h:84
Definition program-point.h:73
Definition exploded-graph.h:39
Definition analyzer.h:313
bool matches_call_types_p(const call_details &) const final override
Definition analyzer.h:315
Definition known-function-manager.h:41
Definition analyzer.h:278
virtual void impl_call_post(const call_details &) const
Definition analyzer.h:286
virtual void impl_call_pre(const call_details &) const
Definition analyzer.h:282
virtual bool matches_call_types_p(const call_details &cd) const =0
virtual const builtin_known_function * dyn_cast_builtin_kf() const
Definition analyzer.h:292
virtual ~known_function()
Definition analyzer.h:280
Definition analyzer-logging.h:34
Definition analyzer.h:399
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 analyzer.h:401
bool operator==(const path_var &other) const
Definition analyzer.h:162
int m_stack_depth
Definition analyzer.h:176
path_var(tree t, int stack_depth)
Definition analyzer.h:156
void dump(pretty_printer *pp) const
tree m_tree
Definition analyzer.h:175
Definition pending-diagnostic.h:190
Definition pending-diagnostic.h:430
Definition analyzer.h:343
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:175
Definition program-state.h:209
Definition analyzer.h:327
void impl_call_pre(const call_details &cd) const override
Definition region-model-reachability.h:36
Definition region-model.h:718
Definition region-model-manager.h:32
Definition region-model.h:263
Definition analyzer.h:192
bit_offset_t get_bit_offset() const
Definition analyzer.h:217
bool symbolic_p() const
Definition analyzer.h:215
const region * get_base_region() const
Definition analyzer.h:212
bit_offset_t m_offset
Definition analyzer.h:260
static region_offset make_byte_offset(const region *base_region, const svalue *num_bytes_sval)
const svalue * m_sym_offset
Definition analyzer.h:261
static region_offset make_concrete(const region *base_region, bit_offset_t offset)
Definition analyzer.h:199
void dump_to_pp(pretty_printer *pp, bool) const
region_offset()
Definition analyzer.h:194
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 analyzer.h:254
bool operator==(const region_offset &other) const
Definition analyzer.h:243
const svalue & calc_symbolic_bit_offset(region_model_manager *mgr) const
const region * m_base_region
Definition analyzer.h:259
bool get_concrete_byte_offset(byte_offset_t *out) const
Definition analyzer.h:223
static region_offset make_symbolic(const region *base_region, const svalue *sym_offset)
Definition analyzer.h:204
const svalue * get_symbolic_byte_offset() const
Definition analyzer.h:234
bool concrete_p() const
Definition analyzer.h:214
Definition region-model.h:1181
Definition supergraph.h:482
Definition exploded-graph.h:457
Definition diagnostic-manager.h:31
Definition program-state.h:77
Definition checker-event.h:347
Definition state-purge.h:78
Definition state-purge.h:194
Definition state-purge.h:162
Definition exploded-graph.h:1033
Definition supergraph.h:314
Definition supergraph.h:109
Definition supergraph.h:235
Definition supergraph.h:557
Definition region-model.h:222
Definition checker-event.h:674
~auto_cfun()
Definition analyzer.h:484
auto_cfun(function *fun)
Definition analyzer.h:483
Definition analyzer.h:529
inner_map_t::iterator iterator
Definition analyzer.h:534
inner_map_t m_inner_map
Definition analyzer.h:567
T * get(const key_t &k) const
Definition analyzer.h:547
T::key_t key_t
Definition analyzer.h:531
~consolidation_map()
Definition analyzer.h:538
iterator begin() const
Definition analyzer.h:563
T instance_t
Definition analyzer.h:532
hash_map< key_t, instance_t * > inner_map_t
Definition analyzer.h:533
void put(const key_t &k, T *instance)
Definition analyzer.h:556
size_t elements() const
Definition analyzer.h:561
iterator end() const
Definition analyzer.h:564
Definition diagnostic-event-id.h:37
Definition genmatch.cc:1506
Definition pretty-print.h:241
Definition lra-spills.cc:101
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:2008
void push_cfun(struct function *new_cfun)
Definition function.cc:4766
void pop_cfun(void)
Definition function.cc:4792
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 analyzer.h:182
bool operator>(const region_offset &, const region_offset &)
offset_int bit_offset_t
Definition analyzer.h:179
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 analyzer.h:354
@ DIR_WRITE
Definition analyzer.h:356
@ DIR_READ
Definition analyzer.h:355
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)
offset_int byte_offset_t
Definition analyzer.h:181
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 analyzer.h:180
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 analyzer.h:63
void register_varargs_builtins(known_function_manager &kfm)
std::unique_ptr< json::value > diagnostic_event_id_to_json(const diagnostic_event_id_t &)
void register_known_fd_functions(known_function_manager &kfm)
int readability_comparator(const void *p1, const void *p2)
void register_known_file_functions(known_function_manager &kfm)
void print_quoted_type(pretty_printer *pp, tree t)
Definition constraint-manager.h:123
Definition event-loc-info.h:29
Definition pending-diagnostic.h:38
Definition region-model.h:1132
Definition diagnostic-manager.h:108
Definition exploded-graph.h:665
Definition tree-loop-distribution.cc:240
Definition function.h:249
Definition analyzer.h:508
static void mark_empty(Type &t)
Definition analyzer.h:518
static hashval_t hash(value_type v)
Definition analyzer.h:511
Type compare_type
Definition analyzer.h:510
Type value_type
Definition analyzer.h:509
static bool equal(const value_type &existing, const value_type &candidate)
Definition analyzer.h:512
static void mark_deleted(Type &t)
Definition analyzer.h:517
static bool is_empty(Type t)
Definition analyzer.h:520
static bool is_deleted(Type t)
Definition analyzer.h:519
Definition analyzer.h:491
static void mark_deleted(Type &)
Type compare_type
Definition analyzer.h:493
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 analyzer.h:492
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 NULL
Definition system.h:50
#define gcc_assert(EXPR)
Definition system.h:814
#define bool
Definition system.h:886
@ END_BUILTINS
Definition tree-core.h:3499
static tree candidate(unsigned uid)
Definition tree-sra.cc:325
static control_dependences * cd
Definition tree-ssa-dce.cc:104
#define NULL_TREE
Definition tree.h:317