Up

module Linearize

: sig
#
type label = int
#
val new_label : unit -> label
#
type instruction = {
# mutable desc
: instruction_desc;
# mutable 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
end