Module Flambda2_simplify.Simplified_named
type simplified_named = private | Simple of Flambda2_term_basics.Simple.t| Prim of Flambda2_terms.Flambda_primitive.t * Debuginfo.t| Set_of_closures of Flambda2_terms.Flambda.Import.Set_of_closures.t| Rec_info of Flambda2_term_basics.Rec_info_expr.t
Unlike Named.t, this type does not include Static_consts because such constants are propagated separately after simplification.
type t = private {named : Flambda2_simplify.Simplified_named.simplified_named;cost_metrics : Flambda2_terms.Cost_metrics.t;free_names : Flambda2_nominal.Name_occurrences.t;
}val create :
machine_width:Target_system.Machine_width.t ->
Flambda2_terms.Flambda.Import.Named.t ->
Flambda2_simplify.Simplified_named.tIt is an error to pass Set_of_closures or Static_consts to this function. (Sets of closures are disallowed because computation of their free names might be expensive; use reachable_with_known_free_names instead.)
val create_with_known_free_names :
machine_width:Target_system.Machine_width.t ->
find_code_characteristics:
(Flambda2_identifiers.Code_id.t ->
Flambda2_terms.Cost_metrics.code_characteristics) ->
Flambda2_terms.Flambda.Import.Named.t ->
free_names:Flambda2_nominal.Name_occurrences.t ->
Flambda2_simplify.Simplified_named.tIt is an error to pass Static_consts to this function.
val print :
Stdlib.Format.formatter ->
Flambda2_simplify.Simplified_named.t ->
unitval cost_metrics :
Flambda2_simplify.Simplified_named.t ->
Flambda2_terms.Cost_metrics.tval update_cost_metrics :
Flambda2_terms.Cost_metrics.t ->
Flambda2_simplify.Simplified_named.t ->
Flambda2_simplify.Simplified_named.ttype 'a or_rewritten = | Simplified of 'a| Rewritten of body:Flambda2_terms.Flambda.Expr.t -> Flambda2_terms.Flambda.Expr.t