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

#include <ipgraph.hpp>

Inheritance diagram for jlm::llvm::FunctionNode:
Inheritance graph
[legend]
Collaboration diagram for jlm::llvm::FunctionNode:
Collaboration graph
[legend]

Public Member Functions

 ~FunctionNode () noexcept override
 
llvm::ControlFlowGraphcfg () const noexcept
 
const jlm::rvsdg::Typetype () const noexcept override
 
std::shared_ptr< const jlm::rvsdg::TypeType () const override
 
const rvsdg::FunctionTypefcttype () const noexcept
 
const std::shared_ptr< const rvsdg::FunctionType > & GetFunctionType () const noexcept
 
const llvm::Linkagelinkage () const noexcept override
 
const std::string & name () const noexcept override
 
bool hasBody () const noexcept override
 
const AttributeSetattributes () const noexcept
 
void add_cfg (std::unique_ptr< ControlFlowGraph > cfg)
 Adds cfg to the function node. If the function node already has a CFG, then it is replaced with cfg. More...
 
- Public Member Functions inherited from jlm::llvm::InterProceduralGraphNode
virtual ~InterProceduralGraphNode () noexcept
 
InterProceduralGraphclg () const noexcept
 
void add_dependency (const InterProceduralGraphNode *dep)
 
const_iterator begin () const
 
const_iterator end () const
 
bool is_selfrecursive () const noexcept
 

Static Public Member Functions

static FunctionNodecreate (InterProceduralGraph &ipg, const std::string &name, std::shared_ptr< const rvsdg::FunctionType > type, const llvm::Linkage &linkage, const AttributeSet &attributes)
 
static FunctionNodecreate (InterProceduralGraph &ipg, const std::string &name, std::shared_ptr< const rvsdg::FunctionType > type, const llvm::Linkage &linkage)
 

Private Member Functions

 FunctionNode (InterProceduralGraph &clg, const std::string &name, std::shared_ptr< const rvsdg::FunctionType > type, const llvm::Linkage &linkage, const AttributeSet &attributes)
 

Private Attributes

std::shared_ptr< const rvsdg::FunctionTypeFunctionType_
 
std::string name_
 
llvm::Linkage linkage_
 
AttributeSet attributes_
 
std::unique_ptr< ControlFlowGraphcfg_
 

Additional Inherited Members

- Protected Member Functions inherited from jlm::llvm::InterProceduralGraphNode
 InterProceduralGraphNode (InterProceduralGraph &clg)
 

Detailed Description

Definition at line 142 of file ipgraph.hpp.

Constructor & Destructor Documentation

◆ ~FunctionNode()

jlm::llvm::FunctionNode::~FunctionNode ( )
overridedefaultnoexcept

◆ FunctionNode()

jlm::llvm::FunctionNode::FunctionNode ( InterProceduralGraph clg,
const std::string &  name,
std::shared_ptr< const rvsdg::FunctionType type,
const llvm::Linkage linkage,
const AttributeSet attributes 
)
inlineprivate

Definition at line 148 of file ipgraph.hpp.

Member Function Documentation

◆ add_cfg()

void jlm::llvm::FunctionNode::add_cfg ( std::unique_ptr< ControlFlowGraph cfg)

Adds cfg to the function node. If the function node already has a CFG, then it is replaced with cfg.

Definition at line 129 of file ipgraph.cpp.

◆ attributes()

const AttributeSet& jlm::llvm::FunctionNode::attributes ( ) const
inlinenoexcept

Definition at line 196 of file ipgraph.hpp.

◆ cfg()

llvm::ControlFlowGraph* jlm::llvm::FunctionNode::cfg ( ) const
inlinenoexcept

Definition at line 163 of file ipgraph.hpp.

◆ create() [1/2]

static FunctionNode* jlm::llvm::FunctionNode::create ( InterProceduralGraph ipg,
const std::string &  name,
std::shared_ptr< const rvsdg::FunctionType type,
const llvm::Linkage linkage 
)
inlinestatic

Definition at line 224 of file ipgraph.hpp.

◆ create() [2/2]

static FunctionNode* jlm::llvm::FunctionNode::create ( InterProceduralGraph ipg,
const std::string &  name,
std::shared_ptr< const rvsdg::FunctionType type,
const llvm::Linkage linkage,
const AttributeSet attributes 
)
inlinestatic

Definition at line 209 of file ipgraph.hpp.

◆ fcttype()

const rvsdg::FunctionType& jlm::llvm::FunctionNode::fcttype ( ) const
inlinenoexcept

Definition at line 175 of file ipgraph.hpp.

◆ GetFunctionType()

const std::shared_ptr<const rvsdg::FunctionType>& jlm::llvm::FunctionNode::GetFunctionType ( ) const
inlinenoexcept

Definition at line 181 of file ipgraph.hpp.

◆ hasBody()

bool jlm::llvm::FunctionNode::hasBody ( ) const
overridevirtualnoexcept

Implements jlm::llvm::InterProceduralGraphNode.

Definition at line 123 of file ipgraph.cpp.

◆ linkage()

const llvm::Linkage & jlm::llvm::FunctionNode::linkage ( ) const
overridevirtualnoexcept

Implements jlm::llvm::InterProceduralGraphNode.

Definition at line 117 of file ipgraph.cpp.

◆ name()

const std::string & jlm::llvm::FunctionNode::name ( ) const
overridevirtualnoexcept

Implements jlm::llvm::InterProceduralGraphNode.

Definition at line 99 of file ipgraph.cpp.

◆ type()

const jlm::rvsdg::Type & jlm::llvm::FunctionNode::type ( ) const
overridevirtualnoexcept

Implements jlm::llvm::InterProceduralGraphNode.

Definition at line 105 of file ipgraph.cpp.

◆ Type()

std::shared_ptr< const jlm::rvsdg::Type > jlm::llvm::FunctionNode::Type ( ) const
overridevirtual

Implements jlm::llvm::InterProceduralGraphNode.

Definition at line 111 of file ipgraph.cpp.

Member Data Documentation

◆ attributes_

AttributeSet jlm::llvm::FunctionNode::attributes_
private

Definition at line 237 of file ipgraph.hpp.

◆ cfg_

std::unique_ptr<ControlFlowGraph> jlm::llvm::FunctionNode::cfg_
private

Definition at line 238 of file ipgraph.hpp.

◆ FunctionType_

std::shared_ptr<const rvsdg::FunctionType> jlm::llvm::FunctionNode::FunctionType_
private

Definition at line 234 of file ipgraph.hpp.

◆ linkage_

llvm::Linkage jlm::llvm::FunctionNode::linkage_
private

Definition at line 236 of file ipgraph.hpp.

◆ name_

std::string jlm::llvm::FunctionNode::name_
private

Definition at line 235 of file ipgraph.hpp.


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