Expand description

A control flow graph represented as mappings of basic blocks to their predecessors and successors.

Successors are represented as basic blocks while predecessors are represented by basic blocks. Basic blocks are denoted by tuples of block and branch/jump instructions. Each predecessor tuple corresponds to the end of a basic block.

    Block0:
        ...          ; beginning of basic block

        ...

        brz vx, Block1 ; end of basic block

        ...          ; beginning of basic block

        ...

        jmp Block2     ; end of basic block

Here Block1 and Block2 would each have a single predecessor denoted as (Block0, brz) and (Block0, jmp Block2) respectively.

Structs

A basic block denoted by its enclosing Block and last instruction.

The Control Flow Graph maintains a mapping of blocks to their predecessors and successors where predecessors are basic blocks and successors are basic blocks.

An iterator over block predecessors. The iterator type is BlockPredecessor.

Type Definitions

An iterator over block successors. The iterator type is Block.