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

#include <operators.hpp>

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

Public Member Functions

 ~SsaPhiOperation () noexcept override
 
 SsaPhiOperation (std::vector< ControlFlowGraphNode * > incomingNodes, const std::shared_ptr< const jlm::rvsdg::Type > &type)
 
 SsaPhiOperation (const SsaPhiOperation &)=default
 
SsaPhiOperationoperator= (const SsaPhiOperation &)=delete
 
SsaPhiOperationoperator= (SsaPhiOperation &&)=delete
 
bool operator== (const Operation &other) const noexcept override
 
std::string debug_string () const override
 
std::unique_ptr< Operation > copy () const override
 
const std::shared_ptr< const rvsdg::Type > & Type () const noexcept
 
ControlFlowGraphNodeGetIncomingNode (size_t n) const noexcept
 
- Public Member Functions inherited from jlm::rvsdg::SimpleOperation
 ~SimpleOperation () noexcept override
 
 SimpleOperation (std::vector< std::shared_ptr< const jlm::rvsdg::Type >> operands, std::vector< std::shared_ptr< const jlm::rvsdg::Type >> results)
 
size_t narguments () const noexcept
 
const std::shared_ptr< const rvsdg::Type > & argument (size_t index) const noexcept
 
size_t nresults () const noexcept
 
const std::shared_ptr< const rvsdg::Type > & result (size_t index) const noexcept
 
- Public Member Functions inherited from jlm::rvsdg::Operation
virtual ~Operation () noexcept
 
virtual bool operator== (const Operation &other) const noexcept=0
 
bool operator!= (const Operation &other) const noexcept
 

Static Public Member Functions

static std::unique_ptr< llvm::ThreeAddressCodecreate (const std::vector< std::pair< const Variable *, ControlFlowGraphNode * >> &arguments, std::shared_ptr< const jlm::rvsdg::Type > type)
 

Private Attributes

std::vector< ControlFlowGraphNode * > IncomingNodes_
 

Detailed Description

Operation that picks its value based on which node branched to the current basic block. All SsaPhiOperations must be at the top of their basic blocks.

Each operand corresponds to an incoming basic block, and the list of incoming nodes must include every predecessor in the cfg exactly once.

Definition at line 31 of file operators.hpp.

Constructor & Destructor Documentation

◆ ~SsaPhiOperation()

jlm::llvm::SsaPhiOperation::~SsaPhiOperation ( )
overridedefaultnoexcept

◆ SsaPhiOperation() [1/2]

jlm::llvm::SsaPhiOperation::SsaPhiOperation ( std::vector< ControlFlowGraphNode * >  incomingNodes,
const std::shared_ptr< const jlm::rvsdg::Type > &  type 
)
inline

Definition at line 36 of file operators.hpp.

◆ SsaPhiOperation() [2/2]

jlm::llvm::SsaPhiOperation::SsaPhiOperation ( const SsaPhiOperation )
default

Member Function Documentation

◆ copy()

std::unique_ptr< rvsdg::Operation > jlm::llvm::SsaPhiOperation::copy ( ) const
overridevirtual

Implements jlm::rvsdg::Operation.

Definition at line 40 of file operators.cpp.

◆ create()

static std::unique_ptr<llvm::ThreeAddressCode> jlm::llvm::SsaPhiOperation::create ( const std::vector< std::pair< const Variable *, ControlFlowGraphNode * >> &  arguments,
std::shared_ptr< const jlm::rvsdg::Type type 
)
inlinestatic

Definition at line 74 of file operators.hpp.

◆ debug_string()

std::string jlm::llvm::SsaPhiOperation::debug_string ( ) const
overridevirtual

Implements jlm::rvsdg::Operation.

Definition at line 25 of file operators.cpp.

◆ GetIncomingNode()

ControlFlowGraphNode* jlm::llvm::SsaPhiOperation::GetIncomingNode ( size_t  n) const
inlinenoexcept

Definition at line 67 of file operators.hpp.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ operator==()

bool jlm::llvm::SsaPhiOperation::operator== ( const Operation &  other) const
overridenoexcept

Definition at line 18 of file operators.cpp.

◆ Type()

const std::shared_ptr<const rvsdg::Type>& jlm::llvm::SsaPhiOperation::Type ( ) const
inlinenoexcept

Definition at line 61 of file operators.hpp.

Member Data Documentation

◆ IncomingNodes_

std::vector<ControlFlowGraphNode *> jlm::llvm::SsaPhiOperation::IncomingNodes_
private

Definition at line 91 of file operators.hpp.


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