Module Linear
type label = Cmm.labeltype instruction = {mutable desc : Linear.instruction_desc;mutable next : Linear.instruction;arg : Reg.t array;res : Reg.t array;dbg : Debuginfo.t;fdo : Fdo_info.t;live : Reg.Set.t;available_before : Reg_availability_set.t;available_across : Reg_availability_set.t;
}and instruction_desc = | Lprologue| Lepilogue_open| Lepilogue_close| Lend| Lop of Operation.t| Lcall_op of Linear.call_operation| Lreloadretaddr| Lreturn| Llabel of {label : Linear.label;section_name : string option;
}| Lbranch of Linear.label| Lcondbranch of Operation.test * Linear.label| Lcondbranch3 of Linear.label option * Linear.label option * Linear.label option| Lswitch of Linear.label array| Lentertrap| Ladjust_stack_offset of {}| Lpushtrap of {lbl_handler : Linear.label;
}| Lpoptrap of {lbl_handler : Linear.label;
}| Lraise of Lambda.raise_kind| Lstackcheck of {}
and call_operation = | Lcall_ind| Lcall_imm of {func : Cmm.symbol;
}| Ltailcall_ind| Ltailcall_imm of {func : Cmm.symbol;
}| Lextcall of {func : string;ty_res : Cmm.machtype;ty_args : Cmm.exttype list;alloc : bool;returns : bool;stack_ofs : int;stack_align : Cmm.stack_align;
}| Lprobe of {}
val has_fallthrough : Linear.instruction_desc -> boolval end_instr : Linear.instructionval instr_cons :
Linear.instruction_desc ->
Reg.t array ->
Reg.t array ->
Linear.instruction ->
available_before:Reg_availability_set.t ->
available_across:Reg_availability_set.t ->
Linear.instructiontype fundecl = {fun_name : string;fun_args : Reg.Set.t;fun_body : Linear.instruction;fun_fast : bool;fun_dbg : Debuginfo.t;fun_tailrec_entry_point_label : Linear.label option;fun_contains_calls : bool;fun_num_stack_slots : int Stack_class.Tbl.t;fun_frame_required : bool;fun_prologue_required : bool;fun_section_name : string option;
}