cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
value_set_analysis_fi.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Value Set Propagation (flow insensitive)
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_POINTER_ANALYSIS_VALUE_SET_ANALYSIS_FI_H
13
#define CPROVER_POINTER_ANALYSIS_VALUE_SET_ANALYSIS_FI_H
14
15
#include <
analyses/flow_insensitive_analysis.h
>
16
17
#include "
value_set_domain_fi.h
"
18
#include "
value_sets.h
"
19
20
class
symbolt
;
21
22
class
value_set_analysis_fit
:
23
public
value_setst
,
24
public
flow_insensitive_analysist
<value_set_domain_fit>
25
{
26
public
:
27
enum
track_optionst
{
TRACK_ALL_POINTERS
,
TRACK_FUNCTION_POINTERS
};
28
29
// constructor
30
value_set_analysis_fit
(
31
const
namespacet
&_ns,
32
track_optionst
_track_options=
TRACK_ALL_POINTERS
):
33
flow_insensitive_analysist
<
value_set_domain_fit
>(_ns),
34
track_options
(_track_options)
35
{
36
}
37
38
typedef
flow_insensitive_analysist<value_set_domain_fit>
baset
;
39
40
void
initialize
(
const
goto_programt
&goto_program)
override
;
41
void
initialize
(
const
goto_functionst
&goto_functions)
override
;
42
43
protected
:
44
track_optionst
track_options
;
45
46
bool
check_type
(
const
typet
&type);
47
void
get_globals
(std::list<value_set_fit::entryt> &dest);
48
void
add_vars
(
const
goto_functionst
&goto_functions);
49
void
add_vars
(
const
goto_programt
&goto_programa);
50
51
void
get_entries
(
52
const
symbolt
&symbol,
53
std::list<value_set_fit::entryt> &dest);
54
55
void
get_entries_rec
(
56
const
irep_idt
&identifier,
57
const
std::string &suffix,
58
const
typet
&type,
59
std::list<value_set_fit::entryt> &dest);
60
61
public
:
62
// interface value_sets
63
std::vector<exprt>
get_values
(
64
const
irep_idt
&function_id,
65
locationt
l,
66
const
exprt
&expr)
override
;
67
};
68
69
#endif
// CPROVER_POINTER_ANALYSIS_VALUE_SET_ANALYSIS_FI_H
exprt
Base class for all expressions.
Definition
expr.h:57
flow_insensitive_analysist< value_set_domain_fit >::locationt
goto_programt::const_targett locationt
Definition
flow_insensitive_analysis.h:244
flow_insensitive_analysist< value_set_domain_fit >::flow_insensitive_analysist
flow_insensitive_analysist(const namespacet &_ns)
Definition
flow_insensitive_analysis.h:239
goto_functionst
A collection of goto functions.
Definition
goto_functions.h:25
goto_programt
A generic container class for the GOTO intermediate representation of one function.
Definition
goto_program.h:72
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
symbolt
Symbol table entry.
Definition
symbol.h:28
typet
The type of an expression, extends irept.
Definition
type.h:29
value_set_analysis_fit::check_type
bool check_type(const typet &type)
Definition
value_set_analysis_fi.cpp:165
value_set_analysis_fit::value_set_analysis_fit
value_set_analysis_fit(const namespacet &_ns, track_optionst _track_options=TRACK_ALL_POINTERS)
Definition
value_set_analysis_fi.h:30
value_set_analysis_fit::get_values
std::vector< exprt > get_values(const irep_idt &function_id, locationt l, const exprt &expr) override
Definition
value_set_analysis_fi.cpp:209
value_set_analysis_fit::get_entries
void get_entries(const symbolt &symbol, std::list< value_set_fit::entryt > &dest)
Definition
value_set_analysis_fi.cpp:82
value_set_analysis_fit::add_vars
void add_vars(const goto_functionst &goto_functions)
Definition
value_set_analysis_fi.cpp:125
value_set_analysis_fit::get_entries_rec
void get_entries_rec(const irep_idt &identifier, const std::string &suffix, const typet &type, std::list< value_set_fit::entryt > &dest)
Definition
value_set_analysis_fi.cpp:89
value_set_analysis_fit::get_globals
void get_globals(std::list< value_set_fit::entryt > &dest)
Definition
value_set_analysis_fi.cpp:152
value_set_analysis_fit::track_optionst
track_optionst
Definition
value_set_analysis_fi.h:27
value_set_analysis_fit::TRACK_ALL_POINTERS
@ TRACK_ALL_POINTERS
Definition
value_set_analysis_fi.h:27
value_set_analysis_fit::TRACK_FUNCTION_POINTERS
@ TRACK_FUNCTION_POINTERS
Definition
value_set_analysis_fi.h:27
value_set_analysis_fit::track_options
track_optionst track_options
Definition
value_set_analysis_fi.h:44
value_set_analysis_fit::initialize
void initialize(const goto_programt &goto_program) override
Definition
value_set_analysis_fi.cpp:20
value_set_analysis_fit::baset
flow_insensitive_analysist< value_set_domain_fit > baset
Definition
value_set_analysis_fi.h:38
value_set_domain_fit
Definition
value_set_domain_fi.h:21
value_setst::value_setst
value_setst()
Definition
value_sets.h:24
flow_insensitive_analysis.h
Flow Insensitive Static Analysis.
value_set_domain_fi.h
Value Set (Flow Insensitive).
value_sets.h
Value Set Propagation.
irep_idt
dstringt irep_idt
Definition
verification_result.h:16
pointer-analysis
value_set_analysis_fi.h
Generated by
1.17.0