- 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