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:
- include/llvm/CodeGen/GlobalISel/RegBankSelect.h