type value = int type inst = | Alloca of value | Load of value * value | Store of value * value | Phi of value * (value * value) list | Move of value * value | BinOp of value * value * value | Ret of value option | Br of value | CondBr of value * value * value type block = { id : value; insts : inst list; mutable preds : value list; mutable succs : value list; } type func = { blocks : block list; entry : value; } let mk_block id insts = { id; insts; preds = []; succs = [] }