Module Inline_and_simplify_aux.Env

type t
val create : never_inline:bool -> backend:(module Backend_intf.S) -> round:int -> ppf_dump:Format.formatter -> t
val backend : t -> (module Backend_intf.S)
val really_import_approx : t -> Simple_value_approx.t -> Simple_value_approx.t
val round : t -> int
val ppf_dump : t -> Format.formatter
val add : t -> Variable.t -> Simple_value_approx.t -> t
val add_outer_scope : t -> Variable.t -> Simple_value_approx.t -> t
val add_mutable : t -> Mutable_variable.t -> Simple_value_approx.t -> t
val find_exn : t -> Variable.t -> Simple_value_approx.t
val find_mutable_exn : t -> Mutable_variable.t -> Simple_value_approx.t
type scope =
  1. | Current
  2. | Outer
val find_with_scope_exn : t -> Variable.t -> scope * Simple_value_approx.t
val find_opt : t -> Variable.t -> Simple_value_approx.t option
val find_list_exn : t -> Variable.t list -> Simple_value_approx.t list
val does_not_bind : t -> Variable.t list -> bool
val does_not_freshen : t -> Variable.t list -> bool
val add_symbol : t -> Symbol.t -> Simple_value_approx.t -> t
val redefine_symbol : t -> Symbol.t -> Simple_value_approx.t -> t
val find_symbol_exn : t -> Symbol.t -> Simple_value_approx.t
val find_symbol_opt : t -> Symbol.t -> Simple_value_approx.t option
val find_symbol_fatal : t -> Symbol.t -> Simple_value_approx.t
val find_or_load_symbol : t -> Symbol.t -> Simple_value_approx.t
val add_projection : t -> projection:Projection.t -> bound_to:Variable.t -> t
val find_projection : t -> projection:Projection.t -> Variable.t option
val mem : t -> Variable.t -> bool
val freshening : t -> Freshening.t
val set_freshening : t -> Freshening.t -> t
val activate_freshening : t -> t
val local : t -> t
val inside_set_of_closures_declaration : Set_of_closures_origin.t -> t -> bool
val at_toplevel : t -> bool
val is_inside_branch : t -> bool
val branch_depth : t -> int
val inside_branch : t -> t
val increase_closure_depth : t -> t
val set_never_inline : t -> t
val set_never_inline_inside_closures : t -> t
val unset_never_inline_inside_closures : t -> t
val set_never_inline_outside_closures : t -> t
val unset_never_inline_outside_closures : t -> t
val never_inline : t -> bool
val inlining_level : t -> int
val inlining_level_up : t -> t
val actively_unrolling : t -> Set_of_closures_origin.t -> int option
val start_actively_unrolling : t -> Set_of_closures_origin.t -> int -> t
val continue_actively_unrolling : t -> Set_of_closures_origin.t -> t
val unrolling_allowed : t -> Set_of_closures_origin.t -> bool
val inside_unrolled_function : t -> Set_of_closures_origin.t -> t
val inlining_allowed : t -> Closure_origin.t -> bool
val inside_inlined_function : t -> Closure_origin.t -> t
val note_entering_closure : t -> closure_id:Closure_id.t -> dbg:Debuginfo.t -> t
val note_entering_call : t -> closure_id:Closure_id.t -> dbg:Debuginfo.t -> t
val note_entering_inlined : t -> t
val note_entering_specialised : t -> closure_ids:Closure_id.Set.t -> t
val enter_closure : t -> closure_id:Closure_id.t -> inline_inside:bool -> dbg:Debuginfo.t -> f:(t -> 'a) -> 'a
val record_decision : t -> Inlining_stats_types.Decision.t -> unit
val print : Format.formatter -> t -> unit
val set_inline_debuginfo : t -> dbg:Debuginfo.t -> t
val add_inlined_debuginfo : t -> dbg:Debuginfo.t -> Debuginfo.t