diff options
Diffstat (limited to 'gcc/analyzer/region-model.h')
-rw-r--r-- | gcc/analyzer/region-model.h | 50 |
1 files changed, 32 insertions, 18 deletions
diff --git a/gcc/analyzer/region-model.h b/gcc/analyzer/region-model.h index 2c7f737..6271ea2 100644 --- a/gcc/analyzer/region-model.h +++ b/gcc/analyzer/region-model.h @@ -385,11 +385,11 @@ class region_model std::unique_ptr<rejected_constraint> *out); void update_for_gcall (const gcall &call_stmt, - region_model_context *ctxt, - function *callee = NULL); + region_model_context *ctxt, + function *callee = nullptr); void update_for_return_gcall (const gcall &call_stmt, - region_model_context *ctxt); + region_model_context *ctxt); const region *push_frame (const function &fun, const gcall *call_stmt, @@ -517,9 +517,9 @@ class region_model bool can_merge_with_p (const region_model &other_model, const program_point &point, region_model *out_model, - const extrinsic_state *ext_state = NULL, - const program_state *state_a = NULL, - const program_state *state_b = NULL) const; + const extrinsic_state *ext_state = nullptr, + const program_state *state_a = nullptr, + const program_state *state_b = nullptr) const; tree get_fndecl_for_call (const gcall &call, region_model_context *ctxt); @@ -600,7 +600,7 @@ class region_model const builtin_known_function * get_builtin_kf (const gcall &call, - region_model_context *ctxt = NULL) const; + region_model_context *ctxt = nullptr) const; static void register_pop_frame_callback (const pop_frame_callback &callback) @@ -818,7 +818,7 @@ class region_model_context Return true if the diagnostic was stored, or false if it was deleted. Optionally provide a custom stmt_finder. */ virtual bool warn (std::unique_ptr<pending_diagnostic> d, - const stmt_finder *custom_finder = NULL) = 0; + const stmt_finder *custom_finder = nullptr) = 0; /* Hook for clients to add a note to the last previously stored pending diagnostic. */ @@ -912,13 +912,15 @@ class region_model_context const state_machine **out_sm, unsigned *out_sm_idx) { - return get_state_map_by_name ("malloc", out_smap, out_sm, out_sm_idx, NULL); + return get_state_map_by_name ("malloc", out_smap, out_sm, out_sm_idx, + nullptr); } bool get_taint_map (sm_state_map **out_smap, const state_machine **out_sm, unsigned *out_sm_idx) { - return get_state_map_by_name ("taint", out_smap, out_sm, out_sm_idx, NULL); + return get_state_map_by_name ("taint", out_smap, out_sm, out_sm_idx, + nullptr); } bool possibly_tainted_p (const svalue *sval); @@ -928,6 +930,8 @@ class region_model_context virtual const exploded_graph *get_eg () const = 0; + virtual const program_state *get_state () const = 0; + /* Hooks for detecting infinite loops. */ virtual void maybe_did_work () = 0; virtual bool checking_for_infinite_loop_p () const = 0; @@ -946,7 +950,7 @@ public: void on_svalue_leak (const svalue *) override {} void on_liveness_change (const svalue_set &, const region_model *) override {} - logger *get_logger () override { return NULL; } + logger *get_logger () override { return nullptr; } void on_condition (const svalue *lhs ATTRIBUTE_UNUSED, enum tree_code op ATTRIBUTE_UNUSED, const svalue *rhs ATTRIBUTE_UNUSED) override @@ -969,14 +973,14 @@ public: void on_escaped_function (tree) override {} - uncertainty_t *get_uncertainty () override { return NULL; } + uncertainty_t *get_uncertainty () override { return nullptr; } void purge_state_involving (const svalue *sval ATTRIBUTE_UNUSED) override {} void bifurcate (std::unique_ptr<custom_edge_info> info) override; void terminate_path () override; - const extrinsic_state *get_ext_state () const override { return NULL; } + const extrinsic_state *get_ext_state () const override { return nullptr; } bool get_state_map_by_name (const char *, sm_state_map **, @@ -987,8 +991,10 @@ public: return false; } - const gimple *get_stmt () const override { return NULL; } - const exploded_graph *get_eg () const override { return NULL; } + const gimple *get_stmt () const override { return nullptr; } + const exploded_graph *get_eg () const override { return nullptr; } + const program_state *get_state () const override { return nullptr; } + void maybe_did_work () override {} bool checking_for_infinite_loop_p () const override { return false; } void on_unusable_in_infinite_loop () override {} @@ -1167,6 +1173,14 @@ class region_model_context_decorator : public region_model_context return nullptr; } + const program_state *get_state () const override + { + if (m_inner) + return m_inner->get_state (); + else + return nullptr; + } + void maybe_did_work () override { if (m_inner) @@ -1337,7 +1351,7 @@ private: class engine { public: - engine (const supergraph *sg = NULL, logger *logger = NULL); + engine (const supergraph *sg = nullptr, logger *logger = nullptr); const supergraph *get_supergraph () { return m_sg; } region_model_manager *get_model_manager () { return &m_mgr; } known_function_manager *get_known_function_manager () @@ -1396,7 +1410,7 @@ private: #define ADD_SAT_CONSTRAINT(MODEL, LHS, OP, RHS) \ SELFTEST_BEGIN_STMT \ - bool sat = (MODEL).add_constraint (LHS, OP, RHS, NULL); \ + bool sat = (MODEL).add_constraint (LHS, OP, RHS, nullptr); \ ASSERT_TRUE (sat); \ SELFTEST_END_STMT @@ -1405,7 +1419,7 @@ private: #define ADD_UNSAT_CONSTRAINT(MODEL, LHS, OP, RHS) \ SELFTEST_BEGIN_STMT \ - bool sat = (MODEL).add_constraint (LHS, OP, RHS, NULL); \ + bool sat = (MODEL).add_constraint (LHS, OP, RHS, nullptr); \ ASSERT_FALSE (sat); \ SELFTEST_END_STMT |