Clambdaand uphantom_defining_expr = | Uphantom_const of uconstant | (* The phantom-let-bound variable is a constant. *) | ||
| Uphantom_var of Backend_var.t | (* The phantom-let-bound variable is an alias for another variable. *) | ||
| Uphantom_offset_var of {
 } | (* The phantom-let-bound-variable's value is defined by adding the given number of words to the pointer contained in the given identifier. *) | ||
| Uphantom_read_field of {
 } | (* The phantom-let-bound-variable's value is found by adding the given number of words to the pointer contained in the given identifier, then dereferencing. *) | ||
| Uphantom_read_symbol_field of {
 } | (* As for   | ||
| Uphantom_block of {
 } | (* The phantom-let-bound variable points at a block with the given structure. *) | 
and ulambda = and ufunction = {label : function_label; | 
arity : int; | 
params : (Backend_var.With_provenance.t * Lambda.value_kind) list; | 
return : Lambda.value_kind; | 
body : ulambda; | 
dbg : Debuginfo.t; | 
env : Backend_var.t option; | 
}type function_description = {fun_label : function_label; | 
fun_arity : int; | 
mutable fun_closed : bool; | 
mutable fun_inline : (Backend_var.With_provenance.t list * ulambda) option; | 
mutable fun_float_const_prop : bool; | 
}type value_approximation = | Value_closure of function_description * value_approximation | 
| Value_tuple of value_approximation array | 
| Value_unknown | 
| Value_const of uconstant | 
| Value_global_field of string * int | 
val compare_structured_constants : ustructured_constant -> ustructured_constant -> inttype preallocated_block = {symbol : string; | 
exported : bool; | 
tag : int; | 
fields : uconstant_block_field option list; | 
provenance : usymbol_provenance option; | 
}type preallocated_constant = {symbol : string; | 
exported : bool; | 
definition : ustructured_constant; | 
provenance : usymbol_provenance option; | 
}type with_constants = ulambda * preallocated_block list * preallocated_constant list