• en

Module Linearize

type label = int
val new_label : unit -> label
type instruction = {
desc : instruction_desc;
next : instruction;
arg : Reg.t array;
res : Reg.t array;
dbg : Debuginfo.t;
live : Reg.Set.t;
}
type instruction_desc =
| Lend
| Lop of Mach.operation
| Lreloadretaddr
| Lreturn
| Llabel of label
| Lbranch of label
| Lcondbranch of Mach.test * label
| Lcondbranch3 of label option * label option * label option
| Lswitch of label array
| Lsetuptrap of label
| Lpushtrap
| Lpoptrap
| Lraise of Lambda.raise_kind
val has_fallthrough : instruction_desc -> bool
val end_instr : instruction
val instr_cons : instruction_desc -> Reg.t array -> Reg.t array -> instruction -> instruction
val invert_test : Mach.test -> Mach.test
type fundecl = {
fun_name : string;
fun_body : instruction;
fun_fast : bool;
fun_dbg : Debuginfo.t;
}
val reset : unit -> unit
val fundecl : Mach.fundecl -> fundecl