cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
three_way_merge_abstract_interpreter.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Variable sensitivity domain
4
5
Author: Martin Brain, martin.brain@cs.ox.ac.uk
6
7
Date: August 2020
8
9
\*******************************************************************/
10
21
22
#ifndef CPROVER_ANALYSES_VARIABLE_SENSITIVITY_THREE_WAY_MERGE_ABSTRACT_INTERPRETER_H
23
#define CPROVER_ANALYSES_VARIABLE_SENSITIVITY_THREE_WAY_MERGE_ABSTRACT_INTERPRETER_H
24
25
#include <
analyses/ai.h
>
26
27
class
ai_three_way_merget
:
public
ai_recursive_interproceduralt
28
{
29
public
:
30
ai_three_way_merget
(
31
std::unique_ptr<ai_history_factory_baset> &&hf,
32
std::unique_ptr<ai_domain_factory_baset> &&df,
33
std::unique_ptr<ai_storage_baset> &&st,
34
message_handlert
&mh)
35
:
ai_recursive_interproceduralt
(
36
std
::move(hf),
37
std
::move(df),
38
std
::move(st),
39
mh)
40
{
41
}
42
43
protected
:
44
// Like ai_recursive_interproceduralt we hook the handling of function calls.
45
// Much of this is the same as ai_recursive_interproceduralt's handling but
46
// on function return the three-way merge is used.
47
bool
visit_edge_function_call
(
48
const
irep_idt
&calling_function_id,
49
trace_ptrt
p_call,
50
locationt
l_return,
51
const
irep_idt
&callee_function_id,
52
working_sett
&working_set,
53
const
goto_programt
&callee,
54
const
goto_functionst
&goto_functions,
55
const
namespacet
&ns)
override
;
56
};
57
58
#endif
ai.h
Abstract Interpretation.
ai_baset::locationt
goto_programt::const_targett locationt
Definition
ai.h:124
ai_baset::trace_ptrt
ai_history_baset::trace_ptrt trace_ptrt
Definition
ai.h:121
ai_baset::working_sett
trace_sett working_sett
The work queue, sorted using the history's ordering operator.
Definition
ai.h:418
ai_recursive_interproceduralt::ai_recursive_interproceduralt
ai_recursive_interproceduralt(std::unique_ptr< ai_history_factory_baset > &&hf, std::unique_ptr< ai_domain_factory_baset > &&df, std::unique_ptr< ai_storage_baset > &&st, message_handlert &mh)
Definition
ai.h:533
ai_three_way_merget::ai_three_way_merget
ai_three_way_merget(std::unique_ptr< ai_history_factory_baset > &&hf, std::unique_ptr< ai_domain_factory_baset > &&df, std::unique_ptr< ai_storage_baset > &&st, message_handlert &mh)
Definition
three_way_merge_abstract_interpreter.h:30
ai_three_way_merget::visit_edge_function_call
bool visit_edge_function_call(const irep_idt &calling_function_id, trace_ptrt p_call, locationt l_return, const irep_idt &callee_function_id, working_sett &working_set, const goto_programt &callee, const goto_functionst &goto_functions, const namespacet &ns) override
Definition
three_way_merge_abstract_interpreter.cpp:25
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
message_handlert
Definition
message.h:27
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition
namespace.h:91
std
STL namespace.
irep_idt
dstringt irep_idt
Definition
verification_result.h:16
analyses
variable-sensitivity
three_way_merge_abstract_interpreter.h
Generated by
1.17.0