Simplify_common
const_*_expr expr v annot
, where the expression expr
is known to evaluate to the value v
, attempt to produce a more simple expression together with its approximation and the benefit gained by replacing expr
with this new expression. This simplification is only performed if expr
is known to have no side effects. Otherwise, expr
itself is returned, with an appropriate approximation but zero benefit.
const_boxed_int_expr
takes an additional argument specifying the kind of boxed integer to which the given expression evaluates.
val const_int_expr : Flambda.named -> int -> Flambda.named * Simple_value_approx.t * Inlining_cost.Benefit.t
val const_char_expr : Flambda.named -> char -> Flambda.named * Simple_value_approx.t * Inlining_cost.Benefit.t
val const_bool_expr : Flambda.named -> bool -> Flambda.named * Simple_value_approx.t * Inlining_cost.Benefit.t
val const_float_expr : Flambda.named -> float -> Flambda.named * Simple_value_approx.t * Inlining_cost.Benefit.t
val const_boxed_int_expr : Flambda.named -> 'a Simple_value_approx.boxed_int -> 'a -> Flambda.named * Simple_value_approx.t * Inlining_cost.Benefit.t
val const_integer_comparison_expr : Flambda.named -> Lambda.integer_comparison -> 'a -> 'a -> Flambda.named * Simple_value_approx.t * Inlining_cost.Benefit.t
val const_float_comparison_expr : Flambda.named -> Lambda.float_comparison -> float -> float -> Flambda.named * Simple_value_approx.t * Inlining_cost.Benefit.t