CBMC
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 
28 {
29 public:
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)
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.
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
dstringt
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition: dstring.h:36
ai_baset::locationt
goto_programt::const_targett locationt
Definition: ai.h:126
ai_baset::working_sett
trace_sett working_sett
The work queue, sorted using the history's ordering operator.
Definition: ai.h:416
ai_recursive_interproceduralt
Definition: ai.h:528
ai_three_way_merget
Definition: three_way_merge_abstract_interpreter.h:27
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition: namespace.h:90
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
message_handlert
Definition: message.h:27
ai.h
goto_functionst
A collection of goto functions.
Definition: goto_functions.h:24
goto_programt
A generic container class for the GOTO intermediate representation of one function.
Definition: goto_program.h:72
ai_baset::trace_ptrt
ai_history_baset::trace_ptrt trace_ptrt
Definition: ai.h:123
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