vox.ir.ir_basic_block

Members

Functions

concatBlockInstructions
void concatBlockInstructions(IrFunction* ir, IrIndex blockA, IrIndex IAN2, IrIndex IBF, IrIndex IBL)
Undocumented in source. Be warned that the author may not have intended to support it.
fixBlockPreds
void fixBlockPreds(IrFunction* ir, IrIndex blockA, IrIndex blockB, IrSmallArray predecessorsA)
Undocumented in source. Be warned that the author may not have intended to support it.
fixBlockSucc
void fixBlockSucc(IrFunction* ir, IrIndex blockA, IrIndex blockB, IrSmallArray successorsA)
Undocumented in source. Be warned that the author may not have intended to support it.
isCriticalEdge
bool isCriticalEdge(IrBasicBlock predBlock, IrBasicBlock succBlock)

INPUT: D >----, A --critical--> B `----> C Edge from A to B is called critical when A has 2+ successors and B has 2+ predecessors

linkSingleBlockBefore
void linkSingleBlockBefore(IrFunction* ir, IrIndex blockA, IrIndex blockB)

blockB must not be an entry block, but may be exit block of IrFunction used for block ordering INPUT: A1 -> A -> A2 or A1 -> A B1 -> B OUTPUT: A1 -> A2 or A1 B1 -> A -> B -> B2

makeBlocksSequential
void makeBlocksSequential(IrFunction* ir, IrIndex blockA, IrIndex blockB)
Undocumented in source. Be warned that the author may not have intended to support it.
moveBlockAfter
void moveBlockAfter(IrFunction* ir, IrIndex blockA, IrIndex blockB)
Undocumented in source. Be warned that the author may not have intended to support it.
removeAllInstrs
void removeAllInstrs(IrBasicBlock block)
Undocumented in source. Be warned that the author may not have intended to support it.
removeAllPhis
void removeAllPhis(IrBasicBlock block)
Undocumented in source. Be warned that the author may not have intended to support it.
removeBlockFromChain
void removeBlockFromChain(IrFunction* ir, IrBasicBlock* blockA)

INPUT: A1 -> A -> A2 or A1 -> A or A -> A2 OUTPUT: A1 --> A2 or A1 or A2

Structs

InstrIterator
struct InstrIterator
Undocumented in source.
InstrReverseIterator
struct InstrReverseIterator
Undocumented in source.
IrBasicBlock
struct IrBasicBlock

Must end with one of block_exit_... instructions Only single loop end must be predecessor of loop header first and last instructions point to this basic block in prevInstr, nextInstr respectively

PhiIterator
struct PhiIterator
Undocumented in source.

Meta

Authors

Andrey Penechko. Basic block