jon.recoil.org

Module Select_utils

module DLL = Oxcaml_utils.Doubly_linked_list
module Int = Numbers.Int
module V = Backend_var
type trap_stack_info =
  1. | Unreachable
  2. | Reachable of Operation.trap_stack
type static_handler = {
  1. regs : Reg.t array list;
  2. traps_ref : trap_stack_info ref;
  3. label : Label.t;
}
type environment = {
  1. vars : (Reg.t array * V.Provenance.t option * Asttypes.mutable_flag) V.Map.t;
  2. static_exceptions : static_handler Static_label.Map.t;
  3. trap_stack : Operation.trap_stack;
  4. tailrec_label : Label.t;
}
val env_create : tailrec_label:Label.t -> environment
val env_add : ?mut:Asttypes.mutable_flag -> VP.t -> Reg.t array -> environment -> environment
val env_add_static_exception : Static_label.t -> Reg.t array list -> environment -> Label.t -> environment * trap_stack_info ref
val env_find : V.Map.key -> environment -> Reg.t array
val env_find_mut : V.Map.key -> environment -> Reg.t array * Backend_var.Provenance.t option
val env_find_regs_for_exception_extra_args : Cmm.trywith_shared_label -> environment -> Reg.t array list
val env_find_static_exception : Static_label.t -> environment -> static_handler
val env_set_trap_stack : environment -> Operation.trap_stack -> environment
val print_traps : Format.formatter -> Operation.trap_stack -> unit
val set_traps_for_raise : environment -> unit
val trap_stack_is_empty : environment -> bool
val pop_all_traps : environment -> Cmm.trap_action list
val select_mutable_flag : Asttypes.mutable_flag -> Operation.mutable_flag
val oper_result_type : Cmm.operation -> Cmm.machtype
val size_component : Cmx_format.machtype_component -> int
val size_machtype : Cmx_format.machtype_component array -> int
val size_expr : environment -> Cmm.expression -> int
val current_function_name : string ref
val current_function_is_check_enabled : bool ref
module Effect : sig ... end
module Coeffect : sig ... end
module Effect_and_coeffect : sig ... end
val select_effects : Cmm.effects -> Effect.t
val select_coeffects : Cmm.coeffects -> Coeffect.t
module Or_never_returns : sig ... end
val float_test_of_float_comparison : Cmm.float_width -> Scalar.Float_comparison.t -> label_false:Label.t -> label_true:Label.t -> Cfg.float_test
val int_test_of_integer_comparison : Scalar.Integer_comparison.t -> immediate:int option -> label_false:Label.t -> label_true:Label.t -> Cfg.int_test
val terminator_of_test : Operation.test -> label_false:Label.t -> label_true:Label.t -> Cfg.terminator
module Stack_offset_and_exn : sig ... end
val make_stack_offset : int -> Cfg.basic
val make_name_for_debugger : ident:Ident.t -> which_parameter:int option -> provenance:Backend_var.Provenance.t option -> regs:Reg.t array -> Cfg.basic
val make_const_int : nativeint -> Operation.t
val make_const_float32 : int32 -> Operation.t
val make_const_float : int64 -> Operation.t
val make_const_vec128 : Cmm.vec128_bits -> Operation.t
val make_const_vec256 : Cmm.vec256_bits -> Operation.t
val make_const_vec512 : Cmm.vec512_bits -> Operation.t
val make_const_symbol : Cmm.symbol -> Operation.t
val make_opaque : unit -> Operation.t
val insert_debug : environment -> Sub_cfg.t -> Cfg.basic -> Debuginfo.t -> Reg.t array -> Reg.t array -> unit
val insert_op_debug_returning_id : environment -> Sub_cfg.t -> Operation.t -> Debuginfo.t -> Reg.t array -> Reg.t array -> InstructionId.t
val insert : environment -> Sub_cfg.t -> Cfg.basic -> Reg.t array -> Reg.t array -> unit
val insert' : environment -> Sub_cfg.t -> Cfg.terminator -> Reg.t array -> Reg.t array -> unit
val insert_debug' : environment -> Sub_cfg.t -> Cfg.terminator -> Debuginfo.t -> Reg.t array -> Reg.t array -> unit
val insert_op_debug' : environment -> Sub_cfg.t -> Cfg.terminator -> Debuginfo.t -> Reg.t array -> Reg.t array -> Reg.t array
val insert_move : environment -> Sub_cfg.t -> Reg.t -> Reg.t -> unit
val insert_moves : environment -> Sub_cfg.t -> Reg.t array -> Reg.t array -> unit
val insert_move_args : environment -> Sub_cfg.t -> Reg.t array -> Reg.t array -> int -> unit
val insert_move_results : environment -> Sub_cfg.t -> Reg.t array -> Reg.t array -> int -> unit
val maybe_emit_naming_op : environment -> Sub_cfg.t -> bound_name:Backend_var.With_provenance.t option -> Reg.t array -> unit
val join_array : environment -> (Reg.t array Or_never_returns.t * Sub_cfg.t) array -> bound_name:Backend_var.With_provenance.t option -> Reg.t array Or_never_returns.t