and 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 {- var : Backend_var.t;
- offset_in_words : int;
 - }(*- 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 {- var : Backend_var.t;
- field : int;
 - }(*- 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_read_var_field, but with the pointer specified by a symbol.
- | Uphantom_block of {- tag : int;
- fields : Backend_var.t list;
 - }(*- The phantom-let-bound variable points at a block with the given structure. *)
and ulambda = - | Uvar of Backend_var.t
- | Uconst of uconstant
- | Udirect_apply of function_label * ulambda list * Debuginfo.t
- | Ugeneric_apply of ulambda * ulambda list * Debuginfo.t
- | Uclosure of ufunction list * ulambda list
- | Uoffset of ulambda * int
- | Ulet of Asttypes.mutable_flag * Lambda.value_kind * Backend_var.With_provenance.t * ulambda * ulambda
- | Uphantom_let of Backend_var.With_provenance.t * uphantom_defining_expr option * ulambda
- | Uprim of Clambda_primitives.primitive * ulambda list * Debuginfo.t
- | Uswitch of ulambda * ulambda_switch * Debuginfo.t
- | Ustringswitch of ulambda * (string * ulambda) list * ulambda option
- | Ustaticfail of int * ulambda list
- | Ucatch of int * (Backend_var.With_provenance.t * Lambda.value_kind) list * ulambda * ulambda
- | Utrywith of ulambda * Backend_var.With_provenance.t * ulambda
- | Uifthenelse of ulambda * ulambda * ulambda
- | Usequence of ulambda * ulambda
- | Uwhile of ulambda * ulambda
- | Ufor of Backend_var.With_provenance.t * ulambda * ulambda * Asttypes.direction_flag * ulambda
- | Uassign of Backend_var.t * ulambda
- | Usend of Lambda.meth_kind * ulambda * ulambda * ulambda list * Debuginfo.t
- | Uunreachable
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;
- poll : Lambda.poll_attribute;
}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;
- fun_poll : Lambda.poll_attribute;
}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
