Module Fang_flow.Node

Nodes in flow graphs.

A block is consists of:

type first = [
| `Entry of label

The entry-point of a frame with the designated label.

| `Label of label

The definition of a label.

]
type middle = [
| `Asm of asm
]

A non-branching assembly instruction.

type last = [
| `Exit

The end of the frame.

| `Cbranch of (label -> asm) * label * (label -> asm) * label

A conditional branch. See Graph.cbranch.

| `Branch of (label -> asm) * label

An unconditional branch. See Graph.branch.

]
type t = [
| `First of first
| `Middle of middle
| `Last of last
]

A generic node, in an arbitrary position.

val pp_first : first Fmt.t
val pp_middle : box Fmt.t -> middle Fmt.t
val pp_last : box Fmt.t -> last Fmt.t
val pp : box Fmt.t -> t Fmt.t