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

#include <basic-block.hpp>

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

Public Member Functions

 ~BasicBlock () noexcept override
 
const ThreeAddressCodeListtacs () const noexcept
 
ThreeAddressCodeListtacs () noexcept
 
ThreeAddressCodeList::const_iterator begin () const noexcept
 
ThreeAddressCodeList::const_reverse_iterator rbegin () const noexcept
 
ThreeAddressCodeList::const_iterator end () const noexcept
 
ThreeAddressCodeList::const_reverse_iterator rend () const noexcept
 
size_t ntacs () const noexcept
 
ThreeAddressCodefirst () const noexcept
 
ThreeAddressCodelast () const noexcept
 
void drop_first ()
 
void drop_last ()
 
llvm::ThreeAddressCodeappend_first (std::unique_ptr< llvm::ThreeAddressCode > tac)
 
void append_first (tacsvector_t &tacs)
 
void append_first (ThreeAddressCodeList &tl)
 
llvm::ThreeAddressCodeappend_last (std::unique_ptr< llvm::ThreeAddressCode > tac)
 
void append_last (tacsvector_t &tacs)
 
llvm::ThreeAddressCodeinsert_before (const ThreeAddressCodeList::const_iterator &it, std::unique_ptr< llvm::ThreeAddressCode > tac)
 
void insert_before (const ThreeAddressCodeList::const_iterator &it, tacsvector_t &tv)
 
bool HasSsaPhiOperation () const
 
llvm::ThreeAddressCodeinsert_before_branch (std::unique_ptr< llvm::ThreeAddressCode > tac)
 
void insert_before_branch (tacsvector_t &tv)
 
- Public Member Functions inherited from jlm::llvm::ControlFlowGraphNode
virtual ~ControlFlowGraphNode () noexcept
 
ControlFlowGraphcfg () const noexcept
 
size_t NumOutEdges () const noexcept
 
ControlFlowGraphEdgeOutEdge (size_t n) const
 
outedge_iterator_range OutEdges () const
 
ControlFlowGraphEdgeadd_outedge (ControlFlowGraphNode *sink)
 
void remove_outedge (size_t n)
 
void remove_outedges ()
 
size_t NumInEdges () const noexcept
 
inedge_iterator_range InEdges () const
 
void divert_inedges (llvm::ControlFlowGraphNode *new_successor)
 
void remove_inedges ()
 
bool no_predecessor () const noexcept
 
bool single_predecessor () const noexcept
 
bool no_successor () const noexcept
 
bool single_successor () const noexcept
 
bool is_branch () const noexcept
 
bool has_selfloop_edge () const noexcept
 

Static Public Member Functions

static BasicBlockcreate (ControlFlowGraph &cfg)
 

Private Member Functions

 BasicBlock (ControlFlowGraph &cfg)
 
 BasicBlock (const BasicBlock &)=delete
 
 BasicBlock (BasicBlock &&)=delete
 
BasicBlockoperator= (const BasicBlock &)=delete
 
BasicBlockoperator= (BasicBlock &&)=delete
 

Private Attributes

ThreeAddressCodeList tacs_
 

Additional Inherited Members

- Protected Member Functions inherited from jlm::llvm::ControlFlowGraphNode
 ControlFlowGraphNode (ControlFlowGraph &cfg)
 

Detailed Description

Definition at line 16 of file basic-block.hpp.

Constructor & Destructor Documentation

◆ ~BasicBlock()

jlm::llvm::BasicBlock::~BasicBlock ( )
overridedefaultnoexcept

◆ BasicBlock() [1/3]

jlm::llvm::BasicBlock::BasicBlock ( ControlFlowGraph cfg)
inlineexplicitprivate

Definition at line 22 of file basic-block.hpp.

◆ BasicBlock() [2/3]

jlm::llvm::BasicBlock::BasicBlock ( const BasicBlock )
privatedelete

◆ BasicBlock() [3/3]

jlm::llvm::BasicBlock::BasicBlock ( BasicBlock &&  )
privatedelete

Member Function Documentation

◆ append_first() [1/3]

llvm::ThreeAddressCode* jlm::llvm::BasicBlock::append_first ( std::unique_ptr< llvm::ThreeAddressCode tac)
inline

Definition at line 104 of file basic-block.hpp.

◆ append_first() [2/3]

void jlm::llvm::BasicBlock::append_first ( tacsvector_t tacs)
inline

Definition at line 111 of file basic-block.hpp.

◆ append_first() [3/3]

void jlm::llvm::BasicBlock::append_first ( ThreeAddressCodeList tl)
inline

Definition at line 119 of file basic-block.hpp.

◆ append_last() [1/2]

llvm::ThreeAddressCode* jlm::llvm::BasicBlock::append_last ( std::unique_ptr< llvm::ThreeAddressCode tac)
inline

Definition at line 125 of file basic-block.hpp.

◆ append_last() [2/2]

void jlm::llvm::BasicBlock::append_last ( tacsvector_t tacs)
inline

Definition at line 132 of file basic-block.hpp.

◆ begin()

ThreeAddressCodeList::const_iterator jlm::llvm::BasicBlock::begin ( ) const
inlinenoexcept

Definition at line 50 of file basic-block.hpp.

◆ create()

BasicBlock * jlm::llvm::BasicBlock::create ( ControlFlowGraph cfg)
static

Definition at line 37 of file basic-block.cpp.

◆ drop_first()

void jlm::llvm::BasicBlock::drop_first ( )
inline

Definition at line 92 of file basic-block.hpp.

◆ drop_last()

void jlm::llvm::BasicBlock::drop_last ( )
inline

Definition at line 98 of file basic-block.hpp.

◆ end()

ThreeAddressCodeList::const_iterator jlm::llvm::BasicBlock::end ( ) const
inlinenoexcept

Definition at line 62 of file basic-block.hpp.

◆ first()

ThreeAddressCode* jlm::llvm::BasicBlock::first ( ) const
inlinenoexcept

Definition at line 80 of file basic-block.hpp.

◆ HasSsaPhiOperation()

bool jlm::llvm::BasicBlock::HasSsaPhiOperation ( ) const

Checks if there are any SsaPhiOperations in the basic block. If any are present, they must be at the very beginning of the block.

Returns
true if the basic block has phi operations, false otherwise

Definition at line 17 of file basic-block.cpp.

◆ insert_before() [1/2]

llvm::ThreeAddressCode* jlm::llvm::BasicBlock::insert_before ( const ThreeAddressCodeList::const_iterator it,
std::unique_ptr< llvm::ThreeAddressCode tac 
)
inline

Definition at line 140 of file basic-block.hpp.

◆ insert_before() [2/2]

void jlm::llvm::BasicBlock::insert_before ( const ThreeAddressCodeList::const_iterator it,
tacsvector_t tv 
)
inline

Definition at line 148 of file basic-block.hpp.

◆ insert_before_branch() [1/2]

llvm::ThreeAddressCode * jlm::llvm::BasicBlock::insert_before_branch ( std::unique_ptr< llvm::ThreeAddressCode tac)

Definition at line 23 of file basic-block.cpp.

◆ insert_before_branch() [2/2]

void jlm::llvm::BasicBlock::insert_before_branch ( tacsvector_t tv)

Definition at line 30 of file basic-block.cpp.

◆ last()

ThreeAddressCode* jlm::llvm::BasicBlock::last ( ) const
inlinenoexcept

Definition at line 86 of file basic-block.hpp.

◆ ntacs()

size_t jlm::llvm::BasicBlock::ntacs ( ) const
inlinenoexcept

Definition at line 74 of file basic-block.hpp.

◆ operator=() [1/2]

BasicBlock& jlm::llvm::BasicBlock::operator= ( BasicBlock &&  )
privatedelete

◆ operator=() [2/2]

BasicBlock& jlm::llvm::BasicBlock::operator= ( const BasicBlock )
privatedelete

◆ rbegin()

ThreeAddressCodeList::const_reverse_iterator jlm::llvm::BasicBlock::rbegin ( ) const
inlinenoexcept

Definition at line 56 of file basic-block.hpp.

◆ rend()

ThreeAddressCodeList::const_reverse_iterator jlm::llvm::BasicBlock::rend ( ) const
inlinenoexcept

Definition at line 68 of file basic-block.hpp.

◆ tacs() [1/2]

const ThreeAddressCodeList& jlm::llvm::BasicBlock::tacs ( ) const
inlinenoexcept

Definition at line 38 of file basic-block.hpp.

◆ tacs() [2/2]

ThreeAddressCodeList& jlm::llvm::BasicBlock::tacs ( )
inlinenoexcept

Definition at line 44 of file basic-block.hpp.

Member Data Documentation

◆ tacs_

ThreeAddressCodeList jlm::llvm::BasicBlock::tacs_
private

Definition at line 174 of file basic-block.hpp.


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