CBMC
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
local_safe_pointers.h
Go to the documentation of this file.
1/*******************************************************************\
2
3Module: Local safe pointer analysis
4
5Author: Diffblue Ltd
6
7\*******************************************************************/
8
11
12#ifndef CPROVER_ANALYSES_LOCAL_SAFE_POINTERS_H
13#define CPROVER_ANALYSES_LOCAL_SAFE_POINTERS_H
14
16
17#include <util/pointer_expr.h>
18
19#include <map>
20
28{
32 {
33 bool operator()(const exprt &e1, const exprt &e2) const
34 {
35 return e1.type() != e2.type() && e1 < e2;
36 }
37 };
38
39 std::map<unsigned, std::set<exprt, type_comparet>> non_null_expressions;
40
41public:
42 void operator()(const goto_programt &goto_program);
43
46
53
54 void output(
55 std::ostream &stream,
56 const goto_programt &program,
57 const namespacet &ns);
58
60 std::ostream &stream,
61 const goto_programt &program,
62 const namespacet &ns);
63};
64
65#endif // CPROVER_ANALYSES_LOCAL_SAFE_POINTERS_H
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Definition ai.h:562
Operator to dereference a pointer.
Base class for all expressions.
Definition expr.h:56
A generic container class for the GOTO intermediate representation of one function.
instructionst::const_iterator const_targett
A very simple, cheap analysis to determine when dereference operations are trivially guarded by a che...
void output_safe_dereferences(std::ostream &stream, const goto_programt &program, const namespacet &ns)
Output safely dereferenced expressions per instruction in human-readable format.
bool is_safe_dereference(const dereference_exprt &deref, goto_programt::const_targett program_point)
void operator()(const goto_programt &goto_program)
Compute safe dereference expressions for a given GOTO program.
bool is_non_null_at_program_point(const exprt &expr, goto_programt::const_targett program_point)
Return true if the local-safe-pointers analysis has determined expr cannot be null as of program_poin...
void output(std::ostream &stream, const goto_programt &program, const namespacet &ns)
Output non-null expressions per instruction in human-readable format.
std::map< unsigned, std::set< exprt, type_comparet > > non_null_expressions
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition namespace.h:91
Concrete Goto Program.
API to expression classes for Pointers.
Comparator that regards type-equal expressions as equal, and otherwise uses the natural (operator<) o...
bool operator()(const exprt &e1, const exprt &e2) const