CBMC
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | List of all members
dependence_grapht Class Reference

#include <dependence_graph.h>

+ Inheritance diagram for dependence_grapht:
+ Collaboration diagram for dependence_grapht:

Public Types

 
- Public Types inherited from ait< dep_graph_domaint >
 
- Public Types inherited from ai_baset
 
 
 
 
 
 
- Public Types inherited from grapht< dep_nodet >
 
 
typedef std::vector< nodetnodest
 
 
 
typedef std::list< node_indextpatht
 

Public Member Functions

 
void  initialize (const goto_functionst &goto_functions)
  Initialize all the abstract states for a whole program.
 
void  initialize (const irep_idt &function, const goto_programt &goto_program)
  Initialize all the abstract states for a single function.
 
  Override this to add a cleanup or post-processing step after fixedpoint has run.
 
 
 
 
- Public Member Functions inherited from ait< dep_graph_domaint >
  ait ()
 
  ait (std::unique_ptr< ai_domain_factory_baset > &&df)
 
  Find the analysis result for a given location.
 
- Public Member Functions inherited from 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)
 
- Public Member Functions inherited from ai_baset
  ai_baset (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)
 
 
void  operator() (const irep_idt &function_id, const goto_programt &goto_program, const namespacet &ns)
  Run abstract interpretation on a single function.
 
  Run abstract interpretation on a whole program.
 
  Run abstract interpretation on a whole program.
 
  Run abstract interpretation on a single function.
 
  Returns all of the histories that have reached the start of the instruction.
 
  Returns all of the histories that have reached the end of the instruction.
 
  Get a copy of the abstract state before the given instruction, without needing to know what kind of domain or history is used.
 
  Get a copy of the abstract state after the given instruction, without needing to know what kind of domain or history is used.
 
  The same interfaces but with histories.
 
 
  Reset the abstract state.
 
virtual void  output (const namespacet &ns, const irep_idt &function_id, const goto_programt &goto_program, std::ostream &out) const
  Output the abstract states for a single function.
 
  Output the abstract states for a single function as JSON.
 
virtual xmlt  output_xml (const namespacet &ns, const irep_idt &function_id, const goto_programt &goto_program) const
  Output the abstract states for a single function as XML.
 
virtual void  output (const namespacet &ns, const goto_functionst &goto_functions, std::ostream &out) const
  Output the abstract states for a whole program.
 
void  output (const goto_modelt &goto_model, std::ostream &out) const
  Output the abstract states for a whole program.
 
void  output (const namespacet &ns, const goto_functionst::goto_functiont &goto_function, std::ostream &out) const
  Output the abstract states for a function.
 
  Output the abstract states for the whole program as JSON.
 
  Output the abstract states for a whole program as JSON.
 
  Output the abstract states for a single function as JSON.
 
  Output the abstract states for a single function as JSON.
 
  Output the abstract states for the whole program as XML.
 
  Output the abstract states for the whole program as XML.
 
  Output the abstract states for a single function as XML.
 
  Output the abstract states for a single function as XML.
 
- Public Member Functions inherited from grapht< dep_nodet >
node_indext  add_node (arguments &&... values)
 
void  swap (grapht &other)
 
 
 
 
 
std::size_t  size () const
 
 
 
 
 
 
 
 
 
 
 
 
void  clear ()
 
 
 
 
  Run depth-first search on the graph, starting from a single source node.
 
std::vector< node_indextget_reachable (const std::vector< node_indext > &src, bool forwards) const
  Run depth-first search on the graph, starting from multiple source nodes.
 
  Removes any edges between nodes in a graph that are unreachable from a given start node.
 
void  disconnect_unreachable (const std::vector< node_indext > &src)
  Removes any edges between nodes in a graph that are unreachable from a vector of start nodes.
 
std::vector< typename N::node_indext >  depth_limited_search (typename N::node_indext src, std::size_t limit) const
  Run recursive depth-limited search on the graph, starting from multiple source nodes, to find the nodes reachable within n steps.
 
std::vector< typename N::node_indext >  depth_limited_search (std::vector< typename N::node_indext > &src, std::size_t limit) const
  Run recursive depth-limited search on the graph, starting from multiple source nodes, to find the nodes reachable within n steps.
 
  Ensure a graph is chordal (contains no 4+-cycles without an edge crossing the cycle) by adding extra edges.
 
std::size_t  connected_subgraphs (std::vector< node_indext > &subgraph_nr)
  Find connected subgraphs in an undirected graph.
 
std::size_t  SCCs (std::vector< node_indext > &subgraph_nr) const
  Computes strongly-connected components of a graph and yields a vector expressing a mapping from nodes to components indices.
 
 
std::list< node_indexttopsort () const
  Find a topological order of the nodes if graph is DAG, return empty list for non-DAG or empty graph.
 
 
 
void  output_dot (std::ostream &out) const
 
 
 

Protected Attributes

 
 
 
 
 
 
- Protected Attributes inherited from ai_baset
  For creating history objects.
 
  For creating domain objects.
 
std::unique_ptr< ai_storage_basetstorage
 
 
- Protected Attributes inherited from grapht< dep_nodet >
 

Additional Inherited Members

- Protected Types inherited from ai_baset
  The work queue, sorted using the history's ordering operator.
 
- Protected Member Functions inherited from ait< dep_graph_domaint >
 
  Get the state for the given history, creating it with the factory if it doesn't exist.
 
- Protected Member Functions inherited from ai_recursive_interproceduralt
 
- Protected Member Functions inherited from ai_baset
  Initialize all the abstract states for a single function.
 
  Set the abstract state of the entry location of a single function to the entry state required by the analysis.
 
  Set the abstract state of the entry location of a whole program to the entry state required by the analysis.
 
  Get the next location from the work queue.
 
 
  Run the fixedpoint algorithm until it reaches a fixed point.
 
 
  Perform one step of abstract interpretation from trace t Depending on the instruction type it may compute a number of "edges" or applications of the abstract transformer.
 
 
 
 
  Merge the state src, flowing from tracet from to tracet to, into the state currently stored for tracet to.
 
virtual std::unique_ptr< statetmake_temporary_state (const statet &s)
  Make a copy of a state.
 
- Protected Member Functions inherited from grapht< dep_nodet >
 
std::vector< typename N::node_indext >  depth_limited_search (std::vector< typename N::node_indext > &src, std::size_t limit, std::vector< bool > &visited) const
  Run recursive depth-limited search on the graph, starting from multiple source nodes, to find the nodes reachable within n steps.
 
void  tarjan (class tarjant &t, node_indext v) const
 

Detailed Description

Definition at line 218 of file dependence_graph.h.

Member Typedef Documentation

◆  post_dominators_mapt

Definition at line 226 of file dependence_graph.h.

Constructor & Destructor Documentation

◆  dependence_grapht()

dependence_grapht::dependence_grapht ( const namespacet_ns,
message_handlertmessage_handler 
)

Definition at line 366 of file dependence_graph.cpp.

Member Function Documentation

◆  add_dep()

void dependence_grapht::add_dep ( dep_edget::kindt  kind,
)

Definition at line 376 of file dependence_graph.cpp.

◆  cfg_post_dominators()

const post_dominators_mapt & dependence_grapht::cfg_post_dominators ( ) const
inline

Definition at line 279 of file dependence_graph.h.

◆  finalize()

void dependence_grapht::finalize ( )
inlinevirtual

Override this to add a cleanup or post-processing step after fixedpoint has run.

Reimplemented from ai_baset.

Definition at line 264 of file dependence_graph.h.

◆  initialize() [1/2]

void dependence_grapht::initialize ( const goto_functionstgoto_functions )
inlinevirtual

Initialize all the abstract states for a whole program.

Override this to do custom per-analysis initialization.

Reimplemented from ai_baset.

Definition at line 230 of file dependence_graph.h.

◆  initialize() [2/2]

void dependence_grapht::initialize ( const irep_idtfunction_id,
const goto_programtgoto_program 
)
inlinevirtual

Initialize all the abstract states for a single function.

Override this to do custom per-domain initialization.

Reimplemented from ai_baset.

Definition at line 246 of file dependence_graph.h.

◆  reaching_definitions()

const reaching_definitions_analysist & dependence_grapht::reaching_definitions ( ) const
inline

Definition at line 284 of file dependence_graph.h.

Member Data Documentation

◆  dep_graph_domain_factoryt

friend dependence_grapht::dep_graph_domain_factoryt
protected

Definition at line 290 of file dependence_graph.h.

◆  dep_graph_domaint

friend dependence_grapht::dep_graph_domaint
protected

Definition at line 291 of file dependence_graph.h.

◆  end_function_map

std::map<irep_idt, goto_programt::const_targett> dependence_grapht::end_function_map
protected

Definition at line 296 of file dependence_graph.h.

◆  ns

const namespacet& dependence_grapht::ns
protected

Definition at line 292 of file dependence_graph.h.

◆  post_dominators

post_dominators_mapt dependence_grapht::post_dominators
protected

Definition at line 294 of file dependence_graph.h.

◆  rd

reaching_definitions_analysist dependence_grapht::rd
protected

Definition at line 295 of file dependence_graph.h.


The documentation for this class was generated from the following files:

AltStyle によって変換されたページ (->オリジナル) /