Cmm
type machtype = machtype_component array
val typ_void : machtype
val typ_val : machtype
val typ_addr : machtype
val typ_int : machtype
val typ_float : machtype
val lub_component :
machtype_component ->
machtype_component ->
machtype_component
val ge_component : machtype_component -> machtype_component -> bool
val negate_integer_comparison : integer_comparison -> integer_comparison
val swap_integer_comparison : integer_comparison -> integer_comparison
type float_comparison = Lambda.float_comparison =
val negate_float_comparison : float_comparison -> float_comparison
val swap_float_comparison : float_comparison -> float_comparison
val new_label : unit -> label
val set_label : label -> unit
val cur_label : unit -> label
type phantom_defining_expr =
| Cphantom_const_int of Targetint.t
| Cphantom_const_symbol of string
| Cphantom_var of Backend_var.t
| Cphantom_offset_var of {
var : Backend_var.t;
offset_in_words : int;
}
| Cphantom_read_field of {
var : Backend_var.t;
field : int;
}
| Cphantom_read_symbol_field of {
}
| Cphantom_block of {
tag : int;
fields : Backend_var.t list;
}
and operation =
| Capply of machtype
| Cextcall of string * machtype * exttype list * bool
| Cload of memory_chunk * Asttypes.mutable_flag
| Calloc
| Cstore of memory_chunk * Lambda.initialization_or_assignment
| Caddi
| Csubi
| Cmuli
| Cmulhi
| Cdivi
| Cmodi
| Cand
| Cor
| Cxor
| Clsl
| Clsr
| Casr
| Ccmpi of integer_comparison
| Caddv
| Cadda
| Ccmpa of integer_comparison
| Cnegf
| Cabsf
| Caddf
| Csubf
| Cmulf
| Cdivf
| Cfloatofint
| Cintoffloat
| Ccmpf of float_comparison
| Craise of Lambda.raise_kind
| Ccheckbound
| Copaque
and expression =
| Cconst_int of int * Debuginfo.t
| Cconst_natint of nativeint * Debuginfo.t
| Cconst_float of float * Debuginfo.t
| Cconst_symbol of string * Debuginfo.t
| Cvar of Backend_var.t
| Clet of Backend_var.With_provenance.t * expression * expression
| Clet_mut of Backend_var.With_provenance.t * machtype * expression * expression
| Cphantom_let of Backend_var.With_provenance.t
* phantom_defining_expr option
* expression
| Cassign of Backend_var.t * expression
| Ctuple of expression list
| Cop of operation * expression list * Debuginfo.t
| Csequence of expression * expression
| Cifthenelse of expression
* Debuginfo.t
* expression
* Debuginfo.t
* expression
* Debuginfo.t
| Cswitch of expression
* int array
* (expression * Debuginfo.t) array
* Debuginfo.t
| Ccatch of rec_flag
* (int
* (Backend_var.With_provenance.t * machtype) list
* expression
* Debuginfo.t)
list
* expression
| Cexit of int * expression list
| Ctrywith of expression
* Backend_var.With_provenance.t
* expression
* Debuginfo.t
type fundecl = {
fun_name : string;
fun_args : (Backend_var.With_provenance.t * machtype) list;
fun_body : expression;
fun_codegen_options : codegen_option list;
fun_poll : Lambda.poll_attribute;
fun_dbg : Debuginfo.t;
}
val ccatch :
(int
* (Backend_var.With_provenance.t * machtype) list
* expression
* expression
* Debuginfo.t) ->
expression
val iter_shallow_tail : (expression -> unit) -> expression -> bool
val map_tail : (expression -> expression) -> expression -> expression
val map_shallow : (expression -> expression) -> expression -> expression