Module Cmm
type machtype_component=|Val|Addr|Int|Floattype machtype= machtype_component array
val typ_void : machtypeval typ_val : machtypeval typ_addr : machtypeval typ_int : machtypeval typ_float : machtypeval size_component : machtype_component -> intval lub_component : machtype_component -> machtype_component -> machtype_componentLeast upper bound of two
machtype_components.
val ge_component : machtype_component -> machtype_component -> boolReturns
trueiff the first suppliedmachtype_componentis greater than or equal to the second under the relation used bylub_component.
val size_machtype : machtype -> int
type integer_comparison= Lambda.integer_comparison=|Ceq|Cne|Clt|Cgt|Cle|Cge
val negate_integer_comparison : integer_comparison -> integer_comparisonval swap_integer_comparison : integer_comparison -> integer_comparison
type float_comparison= Lambda.float_comparison=|CFeq|CFneq|CFlt|CFnlt|CFgt|CFngt|CFle|CFnle|CFge|CFnge
val negate_float_comparison : float_comparison -> float_comparisonval swap_float_comparison : float_comparison -> float_comparison
val new_label : unit -> label
type raise_kind=|Raise_withtrace|Raise_notracetype rec_flag=|Nonrecursive|Recursivetype phantom_defining_expr=|Cphantom_const_int of Targetint.tThe phantom-let-bound variable is a constant integer. The argument must be the tagged representation of an integer within the range of type
inton the target. (Analogously toCconst_int.)|Cphantom_const_symbol of stringThe phantom-let-bound variable is an alias for a symbol.
|Cphantom_var of Backend_var.tThe phantom-let-bound variable is an alias for another variable. The aliased variable must not be a bound by a phantom let.
|Cphantom_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.
|Cphantom_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.
|Cphantom_read_symbol_field of{sym : string;field : int;}As for
Uphantom_read_var_field, but with the pointer specified by a symbol.|Cphantom_block of{tag : int;fields : Backend_var.t list;}The phantom-let-bound variable points at a block with the given structure.
type memory_chunk=|Byte_unsigned|Byte_signed|Sixteen_unsigned|Sixteen_signed|Thirtytwo_unsigned|Thirtytwo_signed|Word_int|Word_val|Single|Double|Double_uand operation=|Capply of machtype|Cextcall of string * machtype * bool * label option|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 raise_kind|Ccheckboundand expression=|Cconst_int of int|Cconst_natint of nativeint|Cconst_float of float|Cconst_symbol of string|Cconst_pointer of int|Cconst_natpointer of nativeint|Cblockheader of nativeint * Debuginfo.t|Cvar of Backend_var.t|Clet of Backend_var.With_provenance.t * 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 * expression * expression|Cswitch of expression * int array * expression array * Debuginfo.t|Cloop of expression|Ccatch of rec_flag * (int * (Backend_var.With_provenance.t * machtype) list * expression) list * expression|Cexit of int * expression list|Ctrywith of expression * Backend_var.With_provenance.t * expressionNot all cmm expressions currently have
Debuginfo.tvalues attached to them. The ones that do are those that are likely to generate code that can fairly robustly be mapped back to a source location. In the future it might be the case that moreDebuginfo.tannotations are desirable.
type codegen_option=|Reduce_code_size|No_CSEtype fundecl={fun_name : string;fun_args : (Backend_var.With_provenance.t * machtype) list;fun_body : expression;fun_codegen_options : codegen_option list;fun_dbg : Debuginfo.t;}type data_item=type phrase=|Cfunction of fundecl|Cdata of data_item list
val ccatch : (int * (Backend_var.With_provenance.t * machtype) list * expression * expression) -> expressionval reset : unit -> unit