LLVM: llvm::RegBankSelect::InsertPoint Class Reference (original) (raw)

Abstract class used to represent an insertion point in a CFG. More...

#include "[llvm/CodeGen/GlobalISel/RegBankSelect.h](RegBankSelect%5F8h%5Fsource.html)"

Public Member Functions
virtual ~InsertPoint ()=default
MachineBasicBlock::iterator getPoint ()
The first call to this method will cause the splitting to happen if need be, then sub sequent calls just return the iterator to that point.
MachineBasicBlock & getInsertMBB ()
The first call to this method will cause the splitting to happen if need be, then sub sequent calls just return the basic block that contains the insertion point.
MachineBasicBlock::iterator insert (MachineInstr &MI)
Insert MI in the just before getPoint()
virtual bool isSplit () const
Does this point involve splitting an edge or block?
virtual uint64_t frequency (const Pass &P) const
Frequency of the insertion point.
virtual bool canMaterialize () const
Check whether this insertion point can be materialized.
Protected Member Functions
virtual void materialize ()=0
Materialize the insertion point.
virtual MachineBasicBlock & getInsertMBBImpl ()=0
Return the materialized insertion basic block.
virtual MachineBasicBlock::iterator getPointImpl ()=0
Return the materialized insertion point.
Protected Attributes
bool WasMaterialized = false
Tell if the insert point has already been materialized.

Abstract class used to represent an insertion point in a CFG.

This class records an insertion point and materializes it on demand. It allows to reason about the frequency of this insertion point, without having to logically materialize it (e.g., on an edge), before we actually need to insert something.

Definition at line 111 of file RegBankSelect.h.

virtual llvm::RegBankSelect::InsertPoint::~InsertPoint ( ) virtualdefault

canMaterialize()

virtual bool llvm::RegBankSelect::InsertPoint::canMaterialize ( ) const inlinevirtual

frequency()

virtual uint64_t llvm::RegBankSelect::InsertPoint::frequency ( const Pass & P) const inlinevirtual

getInsertMBB()

getInsertMBBImpl()

virtual MachineBasicBlock & llvm::RegBankSelect::InsertPoint::getInsertMBBImpl ( ) protectedpure virtual

Return the materialized insertion basic block.

Code will be inserted into that basic block.

Precondition

materialize has been called.

Referenced by getInsertMBB().

getPoint()

getPointImpl()

Return the materialized insertion point.

Code will be inserted before that point.

Precondition

materialize has been called.

Referenced by getPoint().

insert()

isSplit()

virtual bool llvm::RegBankSelect::InsertPoint::isSplit ( ) const inlinevirtual

materialize()

virtual void llvm::RegBankSelect::InsertPoint::materialize ( ) protectedpure virtual

Materialize the insertion point.

If isSplit() is true, this involves actually splitting the block or edge.

Postcondition

getPointImpl() returns a valid iterator.

getInsertMBBImpl() returns a valid basic block.

isSplit() == false ; no more splitting should be required.

Referenced by getInsertMBB(), and getPoint().

WasMaterialized

bool llvm::RegBankSelect::InsertPoint::WasMaterialized = false protected

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