Jlm
Public Member Functions | Static Public Member Functions | Private Types | Private Attributes | List of all members
jlm::llvm::InterProceduralGraph Class Referencefinal

#include <ipgraph.hpp>

Public Member Functions

 ~InterProceduralGraph () noexcept=default
 
 InterProceduralGraph () noexcept=default
 
 InterProceduralGraph (const InterProceduralGraph &)=delete
 
 InterProceduralGraph (InterProceduralGraph &&)=delete
 
InterProceduralGraphoperator= (const InterProceduralGraph &)=delete
 
InterProceduralGraphoperator= (InterProceduralGraph &&)=delete
 
const_iterator begin () const noexcept
 
const_iterator end () const noexcept
 
void add_node (std::unique_ptr< InterProceduralGraphNode > node)
 
size_t nnodes () const noexcept
 
std::vector< std::unordered_set< const InterProceduralGraphNode * > > find_sccs () const
 
const InterProceduralGraphNodefind (const std::string &name) const noexcept
 
void view () const
 

Static Public Member Functions

static util::graph::GraphtoDot (util::graph::Writer &writer, const InterProceduralGraph &interProceduralGraph)
 

Private Types

using const_iterator = util::PtrIterator< const InterProceduralGraphNode, std::vector< std::unique_ptr< InterProceduralGraphNode > >::const_iterator >
 

Private Attributes

std::vector< std::unique_ptr< InterProceduralGraphNode > > nodes_
 

Detailed Description

Definition at line 23 of file ipgraph.hpp.

Member Typedef Documentation

◆ const_iterator

Definition at line 25 of file ipgraph.hpp.

Constructor & Destructor Documentation

◆ ~InterProceduralGraph()

jlm::llvm::InterProceduralGraph::~InterProceduralGraph ( )
defaultnoexcept

◆ InterProceduralGraph() [1/3]

jlm::llvm::InterProceduralGraph::InterProceduralGraph ( )
defaultnoexcept

◆ InterProceduralGraph() [2/3]

jlm::llvm::InterProceduralGraph::InterProceduralGraph ( const InterProceduralGraph )
delete

◆ InterProceduralGraph() [3/3]

jlm::llvm::InterProceduralGraph::InterProceduralGraph ( InterProceduralGraph &&  )
delete

Member Function Documentation

◆ add_node()

void jlm::llvm::InterProceduralGraph::add_node ( std::unique_ptr< InterProceduralGraphNode node)

Definition at line 62 of file ipgraph.cpp.

◆ begin()

const_iterator jlm::llvm::InterProceduralGraph::begin ( ) const
inlinenoexcept

Definition at line 45 of file ipgraph.hpp.

◆ end()

const_iterator jlm::llvm::InterProceduralGraph::end ( ) const
inlinenoexcept

Definition at line 51 of file ipgraph.hpp.

◆ find()

const InterProceduralGraphNode * jlm::llvm::InterProceduralGraph::find ( const std::string &  name) const
noexcept

Definition at line 86 of file ipgraph.cpp.

◆ find_sccs()

std::vector< std::unordered_set< const InterProceduralGraphNode * > > jlm::llvm::InterProceduralGraph::find_sccs ( ) const

Definition at line 68 of file ipgraph.cpp.

◆ nnodes()

size_t jlm::llvm::InterProceduralGraph::nnodes ( ) const
inlinenoexcept

Definition at line 60 of file ipgraph.hpp.

◆ operator=() [1/2]

InterProceduralGraph& jlm::llvm::InterProceduralGraph::operator= ( const InterProceduralGraph )
delete

◆ operator=() [2/2]

InterProceduralGraph& jlm::llvm::InterProceduralGraph::operator= ( InterProceduralGraph &&  )
delete

◆ toDot()

util::graph::Graph & jlm::llvm::InterProceduralGraph::toDot ( util::graph::Writer writer,
const InterProceduralGraph interProceduralGraph 
)
static

Converts the inter-procedural graph to a DOT graph.

Parameters
writerA graph writer for converting the interProceduralGraph to DOT.
interProceduralGraphInter-procedural graph that is converted.
Returns
A DOT graph

Definition at line 100 of file ipgraph.cpp.

◆ view()

void jlm::llvm::InterProceduralGraph::view ( ) const

This function is meant to be used from the debugger. You can just invoke it and a xdot window should pop up with a DOT visualization of the control flow graph. This depends on xdot being in the PATH.

Definition at line 132 of file ipgraph.cpp.

Member Data Documentation

◆ nodes_

std::vector<std::unique_ptr<InterProceduralGraphNode> > jlm::llvm::InterProceduralGraph::nodes_
private

Definition at line 90 of file ipgraph.hpp.


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