Module Linear

type label = Cmm.label
type instruction = {
  1. mutable desc : instruction_desc;
  2. mutable next : instruction;
  3. arg : Reg.t array;
  4. res : Reg.t array;
  5. dbg : Debuginfo.t;
  6. live : Reg.Set.t;
}
and instruction_desc =
  1. | Lprologue
  2. | Lend
  3. | Lop of Mach.operation
  4. | Lreloadretaddr
  5. | Lreturn
  6. | Llabel of label
  7. | Lbranch of label
  8. | Lcondbranch of Mach.test * label
  9. | Lcondbranch3 of label option * label option * label option
  10. | Lswitch of label array
  11. | Lentertrap
  12. | Ladjust_trap_depth of {
    1. delta_traps : int;
    }
  13. | Lpushtrap of {
    1. lbl_handler : label;
    }
  14. | Lpoptrap
  15. | 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 = {
  1. fun_name : string;
  2. fun_args : Reg.Set.t;
  3. fun_body : instruction;
  4. fun_fast : bool;
  5. fun_dbg : Debuginfo.t;
  6. fun_tailrec_entry_point_label : label;
  7. fun_contains_calls : bool;
  8. fun_num_stack_slots : int array;
  9. fun_frame_required : bool;
  10. fun_prologue_required : bool;
}