mirror of
https://github.com/c-cube/moonpool.git
synced 2025-12-19 17:16:44 -05:00
30 lines
48 KiB
HTML
30 lines
48 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Cmm (ocaml.Cmm)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 2.4.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">ocaml</a> » Cmm</nav><header class="odoc-preamble"><h1>Module <code><span>Cmm</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-machtype_component"><a href="#type-machtype_component" class="anchor"></a><code><span><span class="keyword">type</span> machtype_component</span><span> = </span></code><ol><li id="type-machtype_component.Val" class="def variant constructor anchored"><a href="#type-machtype_component.Val" class="anchor"></a><code><span>| </span><span><span class="constructor">Val</span></span></code></li><li id="type-machtype_component.Addr" class="def variant constructor anchored"><a href="#type-machtype_component.Addr" class="anchor"></a><code><span>| </span><span><span class="constructor">Addr</span></span></code></li><li id="type-machtype_component.Int" class="def variant constructor anchored"><a href="#type-machtype_component.Int" class="anchor"></a><code><span>| </span><span><span class="constructor">Int</span></span></code></li><li id="type-machtype_component.Float" class="def variant constructor anchored"><a href="#type-machtype_component.Float" class="anchor"></a><code><span>| </span><span><span class="constructor">Float</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-machtype"><a href="#type-machtype" class="anchor"></a><code><span><span class="keyword">type</span> machtype</span><span> = <span><a href="#type-machtype_component">machtype_component</a> array</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-typ_void"><a href="#val-typ_void" class="anchor"></a><code><span><span class="keyword">val</span> typ_void : <a href="#type-machtype">machtype</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-typ_val"><a href="#val-typ_val" class="anchor"></a><code><span><span class="keyword">val</span> typ_val : <a href="#type-machtype">machtype</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-typ_addr"><a href="#val-typ_addr" class="anchor"></a><code><span><span class="keyword">val</span> typ_addr : <a href="#type-machtype">machtype</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-typ_int"><a href="#val-typ_int" class="anchor"></a><code><span><span class="keyword">val</span> typ_int : <a href="#type-machtype">machtype</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-typ_float"><a href="#val-typ_float" class="anchor"></a><code><span><span class="keyword">val</span> typ_float : <a href="#type-machtype">machtype</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lub_component"><a href="#val-lub_component" class="anchor"></a><code><span><span class="keyword">val</span> lub_component :
|
||
<span><a href="#type-machtype_component">machtype_component</a> <span class="arrow">-></span></span>
|
||
<span><a href="#type-machtype_component">machtype_component</a> <span class="arrow">-></span></span>
|
||
<a href="#type-machtype_component">machtype_component</a></span></code></div><div class="spec-doc"><p>Least upper bound of two <code>machtype_component</code>s.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ge_component"><a href="#val-ge_component" class="anchor"></a><code><span><span class="keyword">val</span> ge_component : <span><a href="#type-machtype_component">machtype_component</a> <span class="arrow">-></span></span> <span><a href="#type-machtype_component">machtype_component</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p>Returns <code>true</code> iff the first supplied <code>machtype_component</code> is greater than or equal to the second under the relation used by <code>lub_component</code>.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-exttype"><a href="#type-exttype" class="anchor"></a><code><span><span class="keyword">type</span> exttype</span><span> = </span></code><ol><li id="type-exttype.XInt" class="def variant constructor anchored"><a href="#type-exttype.XInt" class="anchor"></a><code><span>| </span><span><span class="constructor">XInt</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>r OCaml value, word-sized integer</p><span class="comment-delim">*)</span></div></li><li id="type-exttype.XInt32" class="def variant constructor anchored"><a href="#type-exttype.XInt32" class="anchor"></a><code><span>| </span><span><span class="constructor">XInt32</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>r 32-bit integer</p><span class="comment-delim">*)</span></div></li><li id="type-exttype.XInt64" class="def variant constructor anchored"><a href="#type-exttype.XInt64" class="anchor"></a><code><span>| </span><span><span class="constructor">XInt64</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>r 64-bit integer</p><span class="comment-delim">*)</span></div></li><li id="type-exttype.XFloat" class="def variant constructor anchored"><a href="#type-exttype.XFloat" class="anchor"></a><code><span>| </span><span><span class="constructor">XFloat</span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>r double-precision FP number</p><span class="comment-delim">*)</span></div></li></ol></div><div class="spec-doc"><p>A variant of <code>machtype</code> used to describe arguments to external C functions</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-machtype_of_exttype"><a href="#val-machtype_of_exttype" class="anchor"></a><code><span><span class="keyword">val</span> machtype_of_exttype : <span><a href="#type-exttype">exttype</a> <span class="arrow">-></span></span> <a href="#type-machtype">machtype</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-machtype_of_exttype_list"><a href="#val-machtype_of_exttype_list" class="anchor"></a><code><span><span class="keyword">val</span> machtype_of_exttype_list : <span><span><a href="#type-exttype">exttype</a> list</span> <span class="arrow">-></span></span> <a href="#type-machtype">machtype</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-integer_comparison"><a href="#type-integer_comparison" class="anchor"></a><code><span><span class="keyword">type</span> integer_comparison</span><span> = <a href="../Lambda/index.html#type-integer_comparison">Lambda.integer_comparison</a></span><span> = </span></code><ol><li id="type-integer_comparison.Ceq" class="def variant constructor anchored"><a href="#type-integer_comparison.Ceq" class="anchor"></a><code><span>| </span><span><span class="constructor">Ceq</span></span></code></li><li id="type-integer_comparison.Cne" class="def variant constructor anchored"><a href="#type-integer_comparison.Cne" class="anchor"></a><code><span>| </span><span><span class="constructor">Cne</span></span></code></li><li id="type-integer_comparison.Clt" class="def variant constructor anchored"><a href="#type-integer_comparison.Clt" class="anchor"></a><code><span>| </span><span><span class="constructor">Clt</span></span></code></li><li id="type-integer_comparison.Cgt" class="def variant constructor anchored"><a href="#type-integer_comparison.Cgt" class="anchor"></a><code><span>| </span><span><span class="constructor">Cgt</span></span></code></li><li id="type-integer_comparison.Cle" class="def variant constructor anchored"><a href="#type-integer_comparison.Cle" class="anchor"></a><code><span>| </span><span><span class="constructor">Cle</span></span></code></li><li id="type-integer_comparison.Cge" class="def variant constructor anchored"><a href="#type-integer_comparison.Cge" class="anchor"></a><code><span>| </span><span><span class="constructor">Cge</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-negate_integer_comparison"><a href="#val-negate_integer_comparison" class="anchor"></a><code><span><span class="keyword">val</span> negate_integer_comparison : <span><a href="#type-integer_comparison">integer_comparison</a> <span class="arrow">-></span></span> <a href="#type-integer_comparison">integer_comparison</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-swap_integer_comparison"><a href="#val-swap_integer_comparison" class="anchor"></a><code><span><span class="keyword">val</span> swap_integer_comparison : <span><a href="#type-integer_comparison">integer_comparison</a> <span class="arrow">-></span></span> <a href="#type-integer_comparison">integer_comparison</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-float_comparison"><a href="#type-float_comparison" class="anchor"></a><code><span><span class="keyword">type</span> float_comparison</span><span> = <a href="../Lambda/index.html#type-float_comparison">Lambda.float_comparison</a></span><span> = </span></code><ol><li id="type-float_comparison.CFeq" class="def variant constructor anchored"><a href="#type-float_comparison.CFeq" class="anchor"></a><code><span>| </span><span><span class="constructor">CFeq</span></span></code></li><li id="type-float_comparison.CFneq" class="def variant constructor anchored"><a href="#type-float_comparison.CFneq" class="anchor"></a><code><span>| </span><span><span class="constructor">CFneq</span></span></code></li><li id="type-float_comparison.CFlt" class="def variant constructor anchored"><a href="#type-float_comparison.CFlt" class="anchor"></a><code><span>| </span><span><span class="constructor">CFlt</span></span></code></li><li id="type-float_comparison.CFnlt" class="def variant constructor anchored"><a href="#type-float_comparison.CFnlt" class="anchor"></a><code><span>| </span><span><span class="constructor">CFnlt</span></span></code></li><li id="type-float_comparison.CFgt" class="def variant constructor anchored"><a href="#type-float_comparison.CFgt" class="anchor"></a><code><span>| </span><span><span class="constructor">CFgt</span></span></code></li><li id="type-float_comparison.CFngt" class="def variant constructor anchored"><a href="#type-float_comparison.CFngt" class="anchor"></a><code><span>| </span><span><span class="constructor">CFngt</span></span></code></li><li id="type-float_comparison.CFle" class="def variant constructor anchored"><a href="#type-float_comparison.CFle" class="anchor"></a><code><span>| </span><span><span class="constructor">CFle</span></span></code></li><li id="type-float_comparison.CFnle" class="def variant constructor anchored"><a href="#type-float_comparison.CFnle" class="anchor"></a><code><span>| </span><span><span class="constructor">CFnle</span></span></code></li><li id="type-float_comparison.CFge" class="def variant constructor anchored"><a href="#type-float_comparison.CFge" class="anchor"></a><code><span>| </span><span><span class="constructor">CFge</span></span></code></li><li id="type-float_comparison.CFnge" class="def variant constructor anchored"><a href="#type-float_comparison.CFnge" class="anchor"></a><code><span>| </span><span><span class="constructor">CFnge</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-negate_float_comparison"><a href="#val-negate_float_comparison" class="anchor"></a><code><span><span class="keyword">val</span> negate_float_comparison : <span><a href="#type-float_comparison">float_comparison</a> <span class="arrow">-></span></span> <a href="#type-float_comparison">float_comparison</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-swap_float_comparison"><a href="#val-swap_float_comparison" class="anchor"></a><code><span><span class="keyword">val</span> swap_float_comparison : <span><a href="#type-float_comparison">float_comparison</a> <span class="arrow">-></span></span> <a href="#type-float_comparison">float_comparison</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-label"><a href="#type-label" class="anchor"></a><code><span><span class="keyword">type</span> label</span><span> = int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-new_label"><a href="#val-new_label" class="anchor"></a><code><span><span class="keyword">val</span> new_label : <span>unit <span class="arrow">-></span></span> <a href="#type-label">label</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_label"><a href="#val-set_label" class="anchor"></a><code><span><span class="keyword">val</span> set_label : <span><a href="#type-label">label</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-cur_label"><a href="#val-cur_label" class="anchor"></a><code><span><span class="keyword">val</span> cur_label : <span>unit <span class="arrow">-></span></span> <a href="#type-label">label</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-rec_flag"><a href="#type-rec_flag" class="anchor"></a><code><span><span class="keyword">type</span> rec_flag</span><span> = </span></code><ol><li id="type-rec_flag.Nonrecursive" class="def variant constructor anchored"><a href="#type-rec_flag.Nonrecursive" class="anchor"></a><code><span>| </span><span><span class="constructor">Nonrecursive</span></span></code></li><li id="type-rec_flag.Recursive" class="def variant constructor anchored"><a href="#type-rec_flag.Recursive" class="anchor"></a><code><span>| </span><span><span class="constructor">Recursive</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-phantom_defining_expr"><a href="#type-phantom_defining_expr" class="anchor"></a><code><span><span class="keyword">type</span> phantom_defining_expr</span><span> = </span></code><ol><li id="type-phantom_defining_expr.Cphantom_const_int" class="def variant constructor anchored"><a href="#type-phantom_defining_expr.Cphantom_const_int" class="anchor"></a><code><span>| </span><span><span class="constructor">Cphantom_const_int</span> <span class="keyword">of</span> <a href="../Targetint/index.html#type-t">Targetint.t</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The phantom-let-bound variable is a constant integer. The argument must be the tagged representation of an integer within the range of type <code>int</code> on the target. (Analogously to <code>Cconst_int</code>.)</p><span class="comment-delim">*)</span></div></li><li id="type-phantom_defining_expr.Cphantom_const_symbol" class="def variant constructor anchored"><a href="#type-phantom_defining_expr.Cphantom_const_symbol" class="anchor"></a><code><span>| </span><span><span class="constructor">Cphantom_const_symbol</span> <span class="keyword">of</span> string</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The phantom-let-bound variable is an alias for a symbol.</p><span class="comment-delim">*)</span></div></li><li id="type-phantom_defining_expr.Cphantom_var" class="def variant constructor anchored"><a href="#type-phantom_defining_expr.Cphantom_var" class="anchor"></a><code><span>| </span><span><span class="constructor">Cphantom_var</span> <span class="keyword">of</span> <a href="../Backend_var/index.html#type-t">Backend_var.t</a></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The phantom-let-bound variable is an alias for another variable. The aliased variable must not be a bound by a phantom let.</p><span class="comment-delim">*)</span></div></li><li id="type-phantom_defining_expr.Cphantom_offset_var" class="def variant constructor anchored"><a href="#type-phantom_defining_expr.Cphantom_offset_var" class="anchor"></a><code><span>| </span><span><span class="constructor">Cphantom_offset_var</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-phantom_defining_expr.var" class="def record field anchored"><a href="#type-phantom_defining_expr.var" class="anchor"></a><code><span>var : <a href="../Backend_var/index.html#type-t">Backend_var.t</a>;</span></code></li><li id="type-phantom_defining_expr.offset_in_words" class="def record field anchored"><a href="#type-phantom_defining_expr.offset_in_words" class="anchor"></a><code><span>offset_in_words : int;</span></code></li></ol><code><span>}</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The phantom-let-bound-variable's value is defined by adding the given number of words to the pointer contained in the given identifier.</p><span class="comment-delim">*)</span></div></li><li id="type-phantom_defining_expr.Cphantom_read_field" class="def variant constructor anchored"><a href="#type-phantom_defining_expr.Cphantom_read_field" class="anchor"></a><code><span>| </span><span><span class="constructor">Cphantom_read_field</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-phantom_defining_expr.var" class="def record field anchored"><a href="#type-phantom_defining_expr.var" class="anchor"></a><code><span>var : <a href="../Backend_var/index.html#type-t">Backend_var.t</a>;</span></code></li><li id="type-phantom_defining_expr.field" class="def record field anchored"><a href="#type-phantom_defining_expr.field" class="anchor"></a><code><span>field : int;</span></code></li></ol><code><span>}</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>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.</p><span class="comment-delim">*)</span></div></li><li id="type-phantom_defining_expr.Cphantom_read_symbol_field" class="def variant constructor anchored"><a href="#type-phantom_defining_expr.Cphantom_read_symbol_field" class="anchor"></a><code><span>| </span><span><span class="constructor">Cphantom_read_symbol_field</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-phantom_defining_expr.sym" class="def record field anchored"><a href="#type-phantom_defining_expr.sym" class="anchor"></a><code><span>sym : string;</span></code></li><li id="type-phantom_defining_expr.field" class="def record field anchored"><a href="#type-phantom_defining_expr.field" class="anchor"></a><code><span>field : int;</span></code></li></ol><code><span>}</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>As for <code>Uphantom_read_var_field</code>, but with the pointer specified by a symbol.</p><span class="comment-delim">*)</span></div></li><li id="type-phantom_defining_expr.Cphantom_block" class="def variant constructor anchored"><a href="#type-phantom_defining_expr.Cphantom_block" class="anchor"></a><code><span>| </span><span><span class="constructor">Cphantom_block</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-phantom_defining_expr.tag" class="def record field anchored"><a href="#type-phantom_defining_expr.tag" class="anchor"></a><code><span>tag : int;</span></code></li><li id="type-phantom_defining_expr.fields" class="def record field anchored"><a href="#type-phantom_defining_expr.fields" class="anchor"></a><code><span>fields : <span><a href="../Backend_var/index.html#type-t">Backend_var.t</a> list</span>;</span></code></li></ol><code><span>}</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The phantom-let-bound variable points at a block with the given structure.</p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-memory_chunk"><a href="#type-memory_chunk" class="anchor"></a><code><span><span class="keyword">type</span> memory_chunk</span><span> = </span></code><ol><li id="type-memory_chunk.Byte_unsigned" class="def variant constructor anchored"><a href="#type-memory_chunk.Byte_unsigned" class="anchor"></a><code><span>| </span><span><span class="constructor">Byte_unsigned</span></span></code></li><li id="type-memory_chunk.Byte_signed" class="def variant constructor anchored"><a href="#type-memory_chunk.Byte_signed" class="anchor"></a><code><span>| </span><span><span class="constructor">Byte_signed</span></span></code></li><li id="type-memory_chunk.Sixteen_unsigned" class="def variant constructor anchored"><a href="#type-memory_chunk.Sixteen_unsigned" class="anchor"></a><code><span>| </span><span><span class="constructor">Sixteen_unsigned</span></span></code></li><li id="type-memory_chunk.Sixteen_signed" class="def variant constructor anchored"><a href="#type-memory_chunk.Sixteen_signed" class="anchor"></a><code><span>| </span><span><span class="constructor">Sixteen_signed</span></span></code></li><li id="type-memory_chunk.Thirtytwo_unsigned" class="def variant constructor anchored"><a href="#type-memory_chunk.Thirtytwo_unsigned" class="anchor"></a><code><span>| </span><span><span class="constructor">Thirtytwo_unsigned</span></span></code></li><li id="type-memory_chunk.Thirtytwo_signed" class="def variant constructor anchored"><a href="#type-memory_chunk.Thirtytwo_signed" class="anchor"></a><code><span>| </span><span><span class="constructor">Thirtytwo_signed</span></span></code></li><li id="type-memory_chunk.Word_int" class="def variant constructor anchored"><a href="#type-memory_chunk.Word_int" class="anchor"></a><code><span>| </span><span><span class="constructor">Word_int</span></span></code></li><li id="type-memory_chunk.Word_val" class="def variant constructor anchored"><a href="#type-memory_chunk.Word_val" class="anchor"></a><code><span>| </span><span><span class="constructor">Word_val</span></span></code></li><li id="type-memory_chunk.Single" class="def variant constructor anchored"><a href="#type-memory_chunk.Single" class="anchor"></a><code><span>| </span><span><span class="constructor">Single</span></span></code></li><li id="type-memory_chunk.Double" class="def variant constructor anchored"><a href="#type-memory_chunk.Double" class="anchor"></a><code><span>| </span><span><span class="constructor">Double</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-operation"><a href="#type-operation" class="anchor"></a><code><span><span class="keyword">and</span> operation</span><span> = </span></code><ol><li id="type-operation.Capply" class="def variant constructor anchored"><a href="#type-operation.Capply" class="anchor"></a><code><span>| </span><span><span class="constructor">Capply</span> <span class="keyword">of</span> <a href="#type-machtype">machtype</a></span></code></li><li id="type-operation.Cextcall" class="def variant constructor anchored"><a href="#type-operation.Cextcall" class="anchor"></a><code><span>| </span><span><span class="constructor">Cextcall</span> <span class="keyword">of</span> string * <a href="#type-machtype">machtype</a> * <span><a href="#type-exttype">exttype</a> list</span> * bool</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>The <code>machtype</code> is the machine type of the result. The <code>exttype list</code> describes the unboxing types of the arguments. An empty list means "all arguments are machine words <code>XInt</code>". The boolean indicates whether the function may allocate.</p><span class="comment-delim">*)</span></div></li><li id="type-operation.Cload" class="def variant constructor anchored"><a href="#type-operation.Cload" class="anchor"></a><code><span>| </span><span><span class="constructor">Cload</span> <span class="keyword">of</span> </span><span>{</span></code><ol><li id="type-operation.memory_chunk" class="def record field anchored"><a href="#type-operation.memory_chunk" class="anchor"></a><code><span>memory_chunk : <a href="#type-memory_chunk">memory_chunk</a>;</span></code></li><li id="type-operation.mutability" class="def record field anchored"><a href="#type-operation.mutability" class="anchor"></a><code><span>mutability : <a href="../Asttypes/index.html#type-mutable_flag">Asttypes.mutable_flag</a>;</span></code></li><li id="type-operation.is_atomic" class="def record field anchored"><a href="#type-operation.is_atomic" class="anchor"></a><code><span>is_atomic : bool;</span></code></li></ol><code><span>}</span></code></li><li id="type-operation.Calloc" class="def variant constructor anchored"><a href="#type-operation.Calloc" class="anchor"></a><code><span>| </span><span><span class="constructor">Calloc</span></span></code></li><li id="type-operation.Cstore" class="def variant constructor anchored"><a href="#type-operation.Cstore" class="anchor"></a><code><span>| </span><span><span class="constructor">Cstore</span> <span class="keyword">of</span> <a href="#type-memory_chunk">memory_chunk</a> * <a href="../Lambda/index.html#type-initialization_or_assignment">Lambda.initialization_or_assignment</a></span></code></li><li id="type-operation.Caddi" class="def variant constructor anchored"><a href="#type-operation.Caddi" class="anchor"></a><code><span>| </span><span><span class="constructor">Caddi</span></span></code></li><li id="type-operation.Csubi" class="def variant constructor anchored"><a href="#type-operation.Csubi" class="anchor"></a><code><span>| </span><span><span class="constructor">Csubi</span></span></code></li><li id="type-operation.Cmuli" class="def variant constructor anchored"><a href="#type-operation.Cmuli" class="anchor"></a><code><span>| </span><span><span class="constructor">Cmuli</span></span></code></li><li id="type-operation.Cmulhi" class="def variant constructor anchored"><a href="#type-operation.Cmulhi" class="anchor"></a><code><span>| </span><span><span class="constructor">Cmulhi</span></span></code></li><li id="type-operation.Cdivi" class="def variant constructor anchored"><a href="#type-operation.Cdivi" class="anchor"></a><code><span>| </span><span><span class="constructor">Cdivi</span></span></code></li><li id="type-operation.Cmodi" class="def variant constructor anchored"><a href="#type-operation.Cmodi" class="anchor"></a><code><span>| </span><span><span class="constructor">Cmodi</span></span></code></li><li id="type-operation.Cand" class="def variant constructor anchored"><a href="#type-operation.Cand" class="anchor"></a><code><span>| </span><span><span class="constructor">Cand</span></span></code></li><li id="type-operation.Cor" class="def variant constructor anchored"><a href="#type-operation.Cor" class="anchor"></a><code><span>| </span><span><span class="constructor">Cor</span></span></code></li><li id="type-operation.Cxor" class="def variant constructor anchored"><a href="#type-operation.Cxor" class="anchor"></a><code><span>| </span><span><span class="constructor">Cxor</span></span></code></li><li id="type-operation.Clsl" class="def variant constructor anchored"><a href="#type-operation.Clsl" class="anchor"></a><code><span>| </span><span><span class="constructor">Clsl</span></span></code></li><li id="type-operation.Clsr" class="def variant constructor anchored"><a href="#type-operation.Clsr" class="anchor"></a><code><span>| </span><span><span class="constructor">Clsr</span></span></code></li><li id="type-operation.Casr" class="def variant constructor anchored"><a href="#type-operation.Casr" class="anchor"></a><code><span>| </span><span><span class="constructor">Casr</span></span></code></li><li id="type-operation.Ccmpi" class="def variant constructor anchored"><a href="#type-operation.Ccmpi" class="anchor"></a><code><span>| </span><span><span class="constructor">Ccmpi</span> <span class="keyword">of</span> <a href="#type-integer_comparison">integer_comparison</a></span></code></li><li id="type-operation.Caddv" class="def variant constructor anchored"><a href="#type-operation.Caddv" class="anchor"></a><code><span>| </span><span><span class="constructor">Caddv</span></span></code></li><li id="type-operation.Cadda" class="def variant constructor anchored"><a href="#type-operation.Cadda" class="anchor"></a><code><span>| </span><span><span class="constructor">Cadda</span></span></code></li><li id="type-operation.Ccmpa" class="def variant constructor anchored"><a href="#type-operation.Ccmpa" class="anchor"></a><code><span>| </span><span><span class="constructor">Ccmpa</span> <span class="keyword">of</span> <a href="#type-integer_comparison">integer_comparison</a></span></code></li><li id="type-operation.Cnegf" class="def variant constructor anchored"><a href="#type-operation.Cnegf" class="anchor"></a><code><span>| </span><span><span class="constructor">Cnegf</span></span></code></li><li id="type-operation.Cabsf" class="def variant constructor anchored"><a href="#type-operation.Cabsf" class="anchor"></a><code><span>| </span><span><span class="constructor">Cabsf</span></span></code></li><li id="type-operation.Caddf" class="def variant constructor anchored"><a href="#type-operation.Caddf" class="anchor"></a><code><span>| </span><span><span class="constructor">Caddf</span></span></code></li><li id="type-operation.Csubf" class="def variant constructor anchored"><a href="#type-operation.Csubf" class="anchor"></a><code><span>| </span><span><span class="constructor">Csubf</span></span></code></li><li id="type-operation.Cmulf" class="def variant constructor anchored"><a href="#type-operation.Cmulf" class="anchor"></a><code><span>| </span><span><span class="constructor">Cmulf</span></span></code></li><li id="type-operation.Cdivf" class="def variant constructor anchored"><a href="#type-operation.Cdivf" class="anchor"></a><code><span>| </span><span><span class="constructor">Cdivf</span></span></code></li><li id="type-operation.Cfloatofint" class="def variant constructor anchored"><a href="#type-operation.Cfloatofint" class="anchor"></a><code><span>| </span><span><span class="constructor">Cfloatofint</span></span></code></li><li id="type-operation.Cintoffloat" class="def variant constructor anchored"><a href="#type-operation.Cintoffloat" class="anchor"></a><code><span>| </span><span><span class="constructor">Cintoffloat</span></span></code></li><li id="type-operation.Ccmpf" class="def variant constructor anchored"><a href="#type-operation.Ccmpf" class="anchor"></a><code><span>| </span><span><span class="constructor">Ccmpf</span> <span class="keyword">of</span> <a href="#type-float_comparison">float_comparison</a></span></code></li><li id="type-operation.Craise" class="def variant constructor anchored"><a href="#type-operation.Craise" class="anchor"></a><code><span>| </span><span><span class="constructor">Craise</span> <span class="keyword">of</span> <a href="../Lambda/index.html#type-raise_kind">Lambda.raise_kind</a></span></code></li><li id="type-operation.Ccheckbound" class="def variant constructor anchored"><a href="#type-operation.Ccheckbound" class="anchor"></a><code><span>| </span><span><span class="constructor">Ccheckbound</span></span></code></li><li id="type-operation.Copaque" class="def variant constructor anchored"><a href="#type-operation.Copaque" class="anchor"></a><code><span>| </span><span><span class="constructor">Copaque</span></span></code></li><li id="type-operation.Cdls_get" class="def variant constructor anchored"><a href="#type-operation.Cdls_get" class="anchor"></a><code><span>| </span><span><span class="constructor">Cdls_get</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-expression"><a href="#type-expression" class="anchor"></a><code><span><span class="keyword">and</span> expression</span><span> = </span></code><ol><li id="type-expression.Cconst_int" class="def variant constructor anchored"><a href="#type-expression.Cconst_int" class="anchor"></a><code><span>| </span><span><span class="constructor">Cconst_int</span> <span class="keyword">of</span> int * <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a></span></code></li><li id="type-expression.Cconst_natint" class="def variant constructor anchored"><a href="#type-expression.Cconst_natint" class="anchor"></a><code><span>| </span><span><span class="constructor">Cconst_natint</span> <span class="keyword">of</span> nativeint * <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a></span></code></li><li id="type-expression.Cconst_float" class="def variant constructor anchored"><a href="#type-expression.Cconst_float" class="anchor"></a><code><span>| </span><span><span class="constructor">Cconst_float</span> <span class="keyword">of</span> float * <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a></span></code></li><li id="type-expression.Cconst_symbol" class="def variant constructor anchored"><a href="#type-expression.Cconst_symbol" class="anchor"></a><code><span>| </span><span><span class="constructor">Cconst_symbol</span> <span class="keyword">of</span> string * <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a></span></code></li><li id="type-expression.Cvar" class="def variant constructor anchored"><a href="#type-expression.Cvar" class="anchor"></a><code><span>| </span><span><span class="constructor">Cvar</span> <span class="keyword">of</span> <a href="../Backend_var/index.html#type-t">Backend_var.t</a></span></code></li><li id="type-expression.Clet" class="def variant constructor anchored"><a href="#type-expression.Clet" class="anchor"></a><code><span>| </span><span><span class="constructor">Clet</span> <span class="keyword">of</span> <a href="../Backend_var/With_provenance/index.html#type-t">Backend_var.With_provenance.t</a> * <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a></span></code></li><li id="type-expression.Clet_mut" class="def variant constructor anchored"><a href="#type-expression.Clet_mut" class="anchor"></a><code><span>| </span><span><span class="constructor">Clet_mut</span> <span class="keyword">of</span> <a href="../Backend_var/With_provenance/index.html#type-t">Backend_var.With_provenance.t</a> * <a href="#type-machtype">machtype</a> * <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a></span></code></li><li id="type-expression.Cphantom_let" class="def variant constructor anchored"><a href="#type-expression.Cphantom_let" class="anchor"></a><code><span>| </span><span><span class="constructor">Cphantom_let</span> <span class="keyword">of</span> <a href="../Backend_var/With_provenance/index.html#type-t">Backend_var.With_provenance.t</a>
|
||
* <span><a href="#type-phantom_defining_expr">phantom_defining_expr</a> option</span>
|
||
* <a href="#type-expression">expression</a></span></code></li><li id="type-expression.Cassign" class="def variant constructor anchored"><a href="#type-expression.Cassign" class="anchor"></a><code><span>| </span><span><span class="constructor">Cassign</span> <span class="keyword">of</span> <a href="../Backend_var/index.html#type-t">Backend_var.t</a> * <a href="#type-expression">expression</a></span></code></li><li id="type-expression.Ctuple" class="def variant constructor anchored"><a href="#type-expression.Ctuple" class="anchor"></a><code><span>| </span><span><span class="constructor">Ctuple</span> <span class="keyword">of</span> <span><a href="#type-expression">expression</a> list</span></span></code></li><li id="type-expression.Cop" class="def variant constructor anchored"><a href="#type-expression.Cop" class="anchor"></a><code><span>| </span><span><span class="constructor">Cop</span> <span class="keyword">of</span> <a href="#type-operation">operation</a> * <span><a href="#type-expression">expression</a> list</span> * <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a></span></code></li><li id="type-expression.Csequence" class="def variant constructor anchored"><a href="#type-expression.Csequence" class="anchor"></a><code><span>| </span><span><span class="constructor">Csequence</span> <span class="keyword">of</span> <a href="#type-expression">expression</a> * <a href="#type-expression">expression</a></span></code></li><li id="type-expression.Cifthenelse" class="def variant constructor anchored"><a href="#type-expression.Cifthenelse" class="anchor"></a><code><span>| </span><span><span class="constructor">Cifthenelse</span> <span class="keyword">of</span> <a href="#type-expression">expression</a>
|
||
* <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a>
|
||
* <a href="#type-expression">expression</a>
|
||
* <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a>
|
||
* <a href="#type-expression">expression</a>
|
||
* <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a></span></code></li><li id="type-expression.Cswitch" class="def variant constructor anchored"><a href="#type-expression.Cswitch" class="anchor"></a><code><span>| </span><span><span class="constructor">Cswitch</span> <span class="keyword">of</span> <a href="#type-expression">expression</a>
|
||
* <span>int array</span>
|
||
* <span><span>(<a href="#type-expression">expression</a> * <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a>)</span> array</span>
|
||
* <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a></span></code></li><li id="type-expression.Ccatch" class="def variant constructor anchored"><a href="#type-expression.Ccatch" class="anchor"></a><code><span>| </span><span><span class="constructor">Ccatch</span> <span class="keyword">of</span> <a href="#type-rec_flag">rec_flag</a>
|
||
* <span><span>(int
|
||
* <span><span>(<a href="../Backend_var/With_provenance/index.html#type-t">Backend_var.With_provenance.t</a> * <a href="#type-machtype">machtype</a>)</span> list</span>
|
||
* <a href="#type-expression">expression</a>
|
||
* <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a>)</span>
|
||
list</span>
|
||
* <a href="#type-expression">expression</a></span></code></li><li id="type-expression.Cexit" class="def variant constructor anchored"><a href="#type-expression.Cexit" class="anchor"></a><code><span>| </span><span><span class="constructor">Cexit</span> <span class="keyword">of</span> int * <span><a href="#type-expression">expression</a> list</span></span></code></li><li id="type-expression.Ctrywith" class="def variant constructor anchored"><a href="#type-expression.Ctrywith" class="anchor"></a><code><span>| </span><span><span class="constructor">Ctrywith</span> <span class="keyword">of</span> <a href="#type-expression">expression</a>
|
||
* <a href="../Backend_var/With_provenance/index.html#type-t">Backend_var.With_provenance.t</a>
|
||
* <a href="#type-expression">expression</a>
|
||
* <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a></span></code></li></ol></div><div class="spec-doc"><p>Every basic block should have a corresponding <code>Debuginfo.t</code> for its beginning.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-codegen_option"><a href="#type-codegen_option" class="anchor"></a><code><span><span class="keyword">type</span> codegen_option</span><span> = </span></code><ol><li id="type-codegen_option.Reduce_code_size" class="def variant constructor anchored"><a href="#type-codegen_option.Reduce_code_size" class="anchor"></a><code><span>| </span><span><span class="constructor">Reduce_code_size</span></span></code></li><li id="type-codegen_option.No_CSE" class="def variant constructor anchored"><a href="#type-codegen_option.No_CSE" class="anchor"></a><code><span>| </span><span><span class="constructor">No_CSE</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-fundecl"><a href="#type-fundecl" class="anchor"></a><code><span><span class="keyword">type</span> fundecl</span><span> = </span><span>{</span></code><ol><li id="type-fundecl.fun_name" class="def record field anchored"><a href="#type-fundecl.fun_name" class="anchor"></a><code><span>fun_name : string;</span></code></li><li id="type-fundecl.fun_args" class="def record field anchored"><a href="#type-fundecl.fun_args" class="anchor"></a><code><span>fun_args : <span><span>(<a href="../Backend_var/With_provenance/index.html#type-t">Backend_var.With_provenance.t</a> * <a href="#type-machtype">machtype</a>)</span> list</span>;</span></code></li><li id="type-fundecl.fun_body" class="def record field anchored"><a href="#type-fundecl.fun_body" class="anchor"></a><code><span>fun_body : <a href="#type-expression">expression</a>;</span></code></li><li id="type-fundecl.fun_codegen_options" class="def record field anchored"><a href="#type-fundecl.fun_codegen_options" class="anchor"></a><code><span>fun_codegen_options : <span><a href="#type-codegen_option">codegen_option</a> list</span>;</span></code></li><li id="type-fundecl.fun_poll" class="def record field anchored"><a href="#type-fundecl.fun_poll" class="anchor"></a><code><span>fun_poll : <a href="../Lambda/index.html#type-poll_attribute">Lambda.poll_attribute</a>;</span></code></li><li id="type-fundecl.fun_dbg" class="def record field anchored"><a href="#type-fundecl.fun_dbg" class="anchor"></a><code><span>fun_dbg : <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a>;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-data_item"><a href="#type-data_item" class="anchor"></a><code><span><span class="keyword">type</span> data_item</span><span> = </span></code><ol><li id="type-data_item.Cdefine_symbol" class="def variant constructor anchored"><a href="#type-data_item.Cdefine_symbol" class="anchor"></a><code><span>| </span><span><span class="constructor">Cdefine_symbol</span> <span class="keyword">of</span> string</span></code></li><li id="type-data_item.Cglobal_symbol" class="def variant constructor anchored"><a href="#type-data_item.Cglobal_symbol" class="anchor"></a><code><span>| </span><span><span class="constructor">Cglobal_symbol</span> <span class="keyword">of</span> string</span></code></li><li id="type-data_item.Cint8" class="def variant constructor anchored"><a href="#type-data_item.Cint8" class="anchor"></a><code><span>| </span><span><span class="constructor">Cint8</span> <span class="keyword">of</span> int</span></code></li><li id="type-data_item.Cint16" class="def variant constructor anchored"><a href="#type-data_item.Cint16" class="anchor"></a><code><span>| </span><span><span class="constructor">Cint16</span> <span class="keyword">of</span> int</span></code></li><li id="type-data_item.Cint32" class="def variant constructor anchored"><a href="#type-data_item.Cint32" class="anchor"></a><code><span>| </span><span><span class="constructor">Cint32</span> <span class="keyword">of</span> nativeint</span></code></li><li id="type-data_item.Cint" class="def variant constructor anchored"><a href="#type-data_item.Cint" class="anchor"></a><code><span>| </span><span><span class="constructor">Cint</span> <span class="keyword">of</span> nativeint</span></code></li><li id="type-data_item.Csingle" class="def variant constructor anchored"><a href="#type-data_item.Csingle" class="anchor"></a><code><span>| </span><span><span class="constructor">Csingle</span> <span class="keyword">of</span> float</span></code></li><li id="type-data_item.Cdouble" class="def variant constructor anchored"><a href="#type-data_item.Cdouble" class="anchor"></a><code><span>| </span><span><span class="constructor">Cdouble</span> <span class="keyword">of</span> float</span></code></li><li id="type-data_item.Csymbol_address" class="def variant constructor anchored"><a href="#type-data_item.Csymbol_address" class="anchor"></a><code><span>| </span><span><span class="constructor">Csymbol_address</span> <span class="keyword">of</span> string</span></code></li><li id="type-data_item.Cstring" class="def variant constructor anchored"><a href="#type-data_item.Cstring" class="anchor"></a><code><span>| </span><span><span class="constructor">Cstring</span> <span class="keyword">of</span> string</span></code></li><li id="type-data_item.Cskip" class="def variant constructor anchored"><a href="#type-data_item.Cskip" class="anchor"></a><code><span>| </span><span><span class="constructor">Cskip</span> <span class="keyword">of</span> int</span></code></li><li id="type-data_item.Calign" class="def variant constructor anchored"><a href="#type-data_item.Calign" class="anchor"></a><code><span>| </span><span><span class="constructor">Calign</span> <span class="keyword">of</span> int</span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-phrase"><a href="#type-phrase" class="anchor"></a><code><span><span class="keyword">type</span> phrase</span><span> = </span></code><ol><li id="type-phrase.Cfunction" class="def variant constructor anchored"><a href="#type-phrase.Cfunction" class="anchor"></a><code><span>| </span><span><span class="constructor">Cfunction</span> <span class="keyword">of</span> <a href="#type-fundecl">fundecl</a></span></code></li><li id="type-phrase.Cdata" class="def variant constructor anchored"><a href="#type-phrase.Cdata" class="anchor"></a><code><span>| </span><span><span class="constructor">Cdata</span> <span class="keyword">of</span> <span><a href="#type-data_item">data_item</a> list</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ccatch"><a href="#val-ccatch" class="anchor"></a><code><span><span class="keyword">val</span> ccatch :
|
||
<span><span>(int
|
||
* <span><span>(<a href="../Backend_var/With_provenance/index.html#type-t">Backend_var.With_provenance.t</a> * <a href="#type-machtype">machtype</a>)</span> list</span>
|
||
* <a href="#type-expression">expression</a>
|
||
* <a href="#type-expression">expression</a>
|
||
* <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a>)</span> <span class="arrow">-></span></span>
|
||
<a href="#type-expression">expression</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-reset"><a href="#val-reset" class="anchor"></a><code><span><span class="keyword">val</span> reset : <span>unit <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_shallow_tail"><a href="#val-iter_shallow_tail" class="anchor"></a><code><span><span class="keyword">val</span> iter_shallow_tail : <span><span>(<span><a href="#type-expression">expression</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span><a href="#type-expression">expression</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p>Either apply the callback to all immediate sub-expressions that can produce the final result for the expression and return <code>true</code>, or do nothing and return <code>false</code>. Note that the notion of "tail" sub-expression used here does not match the one used to trigger tail calls; in particular, try...with handlers are considered to be in tail position (because their result become the final result for the expression).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-map_tail"><a href="#val-map_tail" class="anchor"></a><code><span><span class="keyword">val</span> map_tail : <span><span>(<span><a href="#type-expression">expression</a> <span class="arrow">-></span></span> <a href="#type-expression">expression</a>)</span> <span class="arrow">-></span></span> <span><a href="#type-expression">expression</a> <span class="arrow">-></span></span> <a href="#type-expression">expression</a></span></code></div><div class="spec-doc"><p>Apply the transformation to an expression, trying to push it to all inner sub-expressions that can produce the final result. Same disclaimer as for <code>iter_shallow_tail</code> about the notion of "tail" sub-expression.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-map_shallow"><a href="#val-map_shallow" class="anchor"></a><code><span><span class="keyword">val</span> map_shallow : <span><span>(<span><a href="#type-expression">expression</a> <span class="arrow">-></span></span> <a href="#type-expression">expression</a>)</span> <span class="arrow">-></span></span> <span><a href="#type-expression">expression</a> <span class="arrow">-></span></span> <a href="#type-expression">expression</a></span></code></div><div class="spec-doc"><p>Apply the transformation to each immediate sub-expression.</p></div></div></div></body></html>
|