This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
<!DOCTYPE html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>HilInstr (infer.IR.HilInstr)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">IR</a>» HilInstr</nav><h1>Module <code>IR.HilInstr</code></h1></header><divclass="spec module"id="module-F"><ahref="#module-F"class="anchor"></a><code><spanclass="keyword">module</span> F = Stdlib.Format</code></div><dl><dtclass="spec type"id="type-call"><ahref="#type-call"class="anchor"></a><code><spanclass="keyword">type</span> call</code><code> = </code><tableclass="variant"><trid="type-call.Direct"class="anchored"><tdclass="def constructor"><ahref="#type-call.Direct"class="anchor"></a><code>| </code><code><spanclass="constructor">Direct</span><spanclass="keyword">of</span><ahref="../Procname/index.html#type-t">Procname.t</a></code></td></tr><trid="type-call.Indirect"class="anchored"><tdclass="def constructor"><ahref="#type-call.Indirect"class="anchor"></a><code>| </code><code><spanclass="constructor">Indirect</span><spanclass="keyword">of</span><ahref="../HilExp/index.html#type-t">HilExp.t</a></code></td></tr></table></dt><dd><p>type of a procedure call; either direct or via function pointer</p></dd></dl><div><divclass="spec include"><divclass="doc"><dl><dtclass="spec value"id="val-compare_call"><ahref="#val-compare_call"class="anchor"></a><code><spanclass="keyword">val</span> compare_call : <ahref="index.html#type-call">call</a><span>-></span><ahref="index.html#type-call">call</a><span>-></span> int</code></dt></dl></div></div></div><dl><dtclass="spec value"id="val-pp_call"><ahref="#val-pp_call"class="anchor"></a><code><spanclass="keyword">val</span> pp_call : <ahref="index.html#module-F">F</a>.formatter <span>-></span><ahref="index.html#type-call">call</a><span>-></span> unit</code></dt></dl><dl><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code><code> = </code><tableclass="variant"><trid="type-t.Assign"class="anchored"><tdclass="def constructor"><ahref="#type-t.Assign"class="anchor"></a><code>| </code><code><spanclass="constructor">Assign</span><spanclass="keyword">of</span><ahref="../HilExp/AccessExpression/index.html#type-t">HilExp.AccessExpression.t</a> * <ahref="../HilExp/index.html#type-t">HilExp.t</a> * <ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a></code></td><tdclass="doc"><p>LHS access expression, RHS expression</p></td></tr><trid="type-t.Assume"class="anchored"><tdclass="def constructor"><ahref="#type-t.Assume"class="anchor"></a><code>| </code><code><spanclass="constructor">Assume</span><spanclass="keyword">of</span><ahref="../HilExp/index.html#type-t">HilExp.t</a> * <span>[ `Then <span>| `Else</span> ]</span> * <ahref="../Sil/index.html#type-if_kind">Sil.if_kind</a> * <ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a></code></td><tdclass="doc"><p>Assumed expression, true_branch boolean, source of the assume (conditional, ternary, etc.)</p></td></tr><trid="type-t.Call"class="anchored"><tdclass="def constructor"><ahref="#type-t.Call"class="anchor"></a><code>| </code><code><spanclass="constructor">Call</span><spanclass="keyword">of</span><ahref="../AccessPath/index.html#type-base">AccessPath.base</a> * <ahref="index.html#type-call">call</a> * <span><ahref="../HilExp/index.html#type-t">HilExp.t</a> list</span> * <ahref="../CallFlags/index.html#type-t">CallFlags.t</a> * <ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a></code></td><tdclass="doc"><p>Var to hold the return, call expression, formals</p></td></tr><trid="type-t.Metadata"class="anchored"><tdclass="def constructor"><ahref="#type-t.Metadata"class="anchor"></a><code>| </code><code><spanclass="constructor">Metadata</span><spanclass="keyword">of</span><ahref="../Sil/index.html#type-instr_metadata">Sil.instr_metadata</a></code></td><tdclass="doc"><p>see <ahref="../Sil/index.html#type-instr_metadata"><code>Sil.instr_metadata</code></a></p></td></tr></table></dt></dl><div><divclass="spec include"><divclass="doc"><dl><dtclass="spec value"id="val-compare"><ahref="#val-compare"class="anchor"></a><code><spanclass="keyword">val</span> compare : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> int</code></dt></dl></div></div></div><dl><dtclass="spec value"id="val-pp"><ahref="#val-pp"class="anchor"></a><code><spanclass="keyword">val</span> pp : <ahref="index.html#module-F">F</a>.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt></dl><dl><dtclass="spec type"id="type-translation"><ahref="#type-translation"class="anchor"></a><code><spanclass="keyword">type</span> translation</code><code> = </code><tableclass="variant"><trid="type-translation.Instr"class="anchored"><tdclass="def constructor"><ahref="#type-translation.Instr"class="anchor"></a><code>| </code><code><spanclass="constructor">Instr</span><spanclass="keyword">of</span><ahref="index.html#type-t">t</a></code></td><tdclass="doc"><p>HIL instruction to execute</p></td></tr><trid="type-translation.Bind"class="anchored"><tdclass="def constructor"><ahref="#type-translation.Bind"class="anchor"></a><code>| </code><code><spanclass="constructor">Bind</span><spanclass="keyword">of</span><ahref="../Var/index.html#type-t">Var.t</a> * <ahref="../HilExp/AccessExpression/index.html#type-t">HilExp.AccessExpression.t</a></code></td><tdclass="doc"><p>add binding to identifier map</p></td></tr></table></dt><dd><p>Result of translating an SIL instruction</p></dd></dl><dl><dtclass="spec value"id="val-of_sil"><ahref="#val-of_sil"class="anchor"></a><code><spanclass="keyword">val</span> of_sil : <span>include_array_indexes:bool</span><span>-></span><span>f_resolve_id:<span>(<ahref="../Var/index.html#type-t">Var.t</a><span>-></span><span><ahref="../HilExp/AccessExpression/index.html#type-t">HilExp.AccessExpression.t</a> option</span>)</span></span><span>-></span><ahref="../Sil/index.html#type-instr">Sil.instr</a><span>-></span><ahref="index.html#type-translation">translation</a></code></dt><dd><p>convert an SIL instruction into an HIL instruction. The <code>f_resolve_id</code> function should map an SSA temporary variable to the access path it represents. Evaluating the HIL instruction should produce the same result as evaluating the SIL instruction and replacing the temporary variables using <code>f_resolve_id</code>.</p></dd></dl></div></body></html>