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

#include <tac.hpp>

Public Member Functions

 ~ThreeAddressCode () noexcept=default
 
 ThreeAddressCode (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands)
 
 ThreeAddressCode (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands, const std::vector< std::string > &names)
 
 ThreeAddressCode (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands, std::vector< std::unique_ptr< ThreeAddressCodeVariable >> results)
 
 ThreeAddressCode (const llvm::ThreeAddressCode &)=delete
 
 ThreeAddressCode (llvm::ThreeAddressCode &&)=delete
 
ThreeAddressCodeoperator= (const llvm::ThreeAddressCode &)=delete
 
ThreeAddressCodeoperator= (llvm::ThreeAddressCode &&)=delete
 
const rvsdg::SimpleOperationoperation () const noexcept
 
size_t noperands () const noexcept
 
const Variableoperand (size_t index) const noexcept
 
size_t nresults () const noexcept
 
const ThreeAddressCodeVariableresult (size_t index) const noexcept
 
std::vector< std::unique_ptr< ThreeAddressCodeVariable > > results ()
 
void replace (const rvsdg::SimpleOperation &operation, const std::vector< const Variable * > &operands)
 
void convert (const rvsdg::SimpleOperation &operation, const std::vector< const Variable * > &operands)
 

Static Public Member Functions

static std::string ToAscii (const ThreeAddressCode &threeAddressCode)
 
static std::unique_ptr< llvm::ThreeAddressCodecreate (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands)
 
static std::unique_ptr< llvm::ThreeAddressCodecreate (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands, const std::vector< std::string > &names)
 
static std::unique_ptr< llvm::ThreeAddressCodecreate (std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands, std::vector< std::unique_ptr< ThreeAddressCodeVariable >> results)
 

Private Member Functions

void create_results (const rvsdg::SimpleOperation &operation, const std::vector< std::string > &names)
 

Static Private Member Functions

static std::vector< std::string > create_names (size_t nnames)
 

Private Attributes

std::vector< const Variable * > operands_
 
std::unique_ptr< rvsdg::Operationoperation_
 
std::vector< std::unique_ptr< ThreeAddressCodeVariable > > results_
 

Detailed Description

Definition at line 54 of file tac.hpp.

Constructor & Destructor Documentation

◆ ~ThreeAddressCode()

jlm::llvm::ThreeAddressCode::~ThreeAddressCode ( )
defaultnoexcept

◆ ThreeAddressCode() [1/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( std::unique_ptr< rvsdg::SimpleOperation operation,
const std::vector< const Variable * > &  operands 
)

Definition at line 53 of file tac.cpp.

◆ ThreeAddressCode() [2/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( std::unique_ptr< rvsdg::SimpleOperation operation,
const std::vector< const Variable * > &  operands,
const std::vector< std::string > &  names 
)

Definition at line 65 of file tac.cpp.

◆ ThreeAddressCode() [3/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( std::unique_ptr< rvsdg::SimpleOperation operation,
const std::vector< const Variable * > &  operands,
std::vector< std::unique_ptr< ThreeAddressCodeVariable >>  results 
)

Definition at line 80 of file tac.cpp.

◆ ThreeAddressCode() [4/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( const llvm::ThreeAddressCode )
delete

◆ ThreeAddressCode() [5/5]

jlm::llvm::ThreeAddressCode::ThreeAddressCode ( llvm::ThreeAddressCode &&  )
delete

Member Function Documentation

◆ convert()

void jlm::llvm::ThreeAddressCode::convert ( const rvsdg::SimpleOperation operation,
const std::vector< const Variable * > &  operands 
)

Definition at line 93 of file tac.cpp.

◆ create() [1/3]

static std::unique_ptr<llvm::ThreeAddressCode> jlm::llvm::ThreeAddressCode::create ( std::unique_ptr< rvsdg::SimpleOperation operation,
const std::vector< const Variable * > &  operands 
)
inlinestatic

Definition at line 135 of file tac.hpp.

◆ create() [2/3]

static std::unique_ptr<llvm::ThreeAddressCode> jlm::llvm::ThreeAddressCode::create ( std::unique_ptr< rvsdg::SimpleOperation operation,
const std::vector< const Variable * > &  operands,
const std::vector< std::string > &  names 
)
inlinestatic

Definition at line 143 of file tac.hpp.

◆ create() [3/3]

static std::unique_ptr<llvm::ThreeAddressCode> jlm::llvm::ThreeAddressCode::create ( std::unique_ptr< rvsdg::SimpleOperation operation,
const std::vector< const Variable * > &  operands,
std::vector< std::unique_ptr< ThreeAddressCodeVariable >>  results 
)
inlinestatic

Definition at line 152 of file tac.hpp.

◆ create_names()

static std::vector<std::string> jlm::llvm::ThreeAddressCode::create_names ( size_t  nnames)
inlinestaticprivate

Definition at line 177 of file tac.hpp.

◆ create_results()

void jlm::llvm::ThreeAddressCode::create_results ( const rvsdg::SimpleOperation operation,
const std::vector< std::string > &  names 
)
inlineprivate

Definition at line 165 of file tac.hpp.

◆ noperands()

size_t jlm::llvm::ThreeAddressCode::noperands ( ) const
inlinenoexcept

Definition at line 90 of file tac.hpp.

◆ nresults()

size_t jlm::llvm::ThreeAddressCode::nresults ( ) const
inlinenoexcept

Definition at line 103 of file tac.hpp.

◆ operand()

const Variable* jlm::llvm::ThreeAddressCode::operand ( size_t  index) const
inlinenoexcept

Definition at line 96 of file tac.hpp.

◆ operation()

const rvsdg::SimpleOperation& jlm::llvm::ThreeAddressCode::operation ( ) const
inlinenoexcept

Definition at line 84 of file tac.hpp.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ replace()

void jlm::llvm::ThreeAddressCode::replace ( const rvsdg::SimpleOperation operation,
const std::vector< const Variable * > &  operands 
)

Definition at line 108 of file tac.cpp.

◆ result()

const ThreeAddressCodeVariable* jlm::llvm::ThreeAddressCode::result ( size_t  index) const
inlinenoexcept

Definition at line 109 of file tac.hpp.

◆ results()

std::vector<std::unique_ptr<ThreeAddressCodeVariable> > jlm::llvm::ThreeAddressCode::results ( )
inline

Definition at line 120 of file tac.hpp.

◆ ToAscii()

std::string jlm::llvm::ThreeAddressCode::ToAscii ( const ThreeAddressCode threeAddressCode)
static

Definition at line 120 of file tac.cpp.

Member Data Documentation

◆ operands_

std::vector<const Variable *> jlm::llvm::ThreeAddressCode::operands_
private

Definition at line 187 of file tac.hpp.

◆ operation_

std::unique_ptr<rvsdg::Operation> jlm::llvm::ThreeAddressCode::operation_
private

Definition at line 188 of file tac.hpp.

◆ results_

std::vector<std::unique_ptr<ThreeAddressCodeVariable> > jlm::llvm::ThreeAddressCode::results_
private

Definition at line 189 of file tac.hpp.


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