<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>IR__DecompiledExp (infer.IR__DecompiledExp)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> – <a href="../index.html">infer</a> &#x00BB; IR__DecompiledExp</nav><h1>Module <code>IR__DecompiledExp</code></h1><p>The Smallfoot Intermediate Language: Decompiled Expressions</p></header><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><code><span class="keyword">module</span> F = Stdlib.Format</code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = </code><table class="variant"><tr id="type-t.Darray" class="anchored"><td class="def constructor"><a href="#type-t.Darray" class="anchor"></a><code>| </code><code><span class="constructor">Darray</span> <span class="keyword">of</span> <a href="index.html#type-t">t</a> * <a href="index.html#type-t">t</a></code></td></tr><tr id="type-t.Dbinop" class="anchored"><td class="def constructor"><a href="#type-t.Dbinop" class="anchor"></a><code>| </code><code><span class="constructor">Dbinop</span> <span class="keyword">of</span> <a href="../IR/Binop/index.html#type-t">IR.Binop.t</a> * <a href="index.html#type-t">t</a> * <a href="index.html#type-t">t</a></code></td></tr><tr id="type-t.Dconst" class="anchored"><td class="def constructor"><a href="#type-t.Dconst" class="anchor"></a><code>| </code><code><span class="constructor">Dconst</span> <span class="keyword">of</span> <a href="../IR/Const/index.html#type-t">IR.Const.t</a></code></td></tr><tr id="type-t.Dsizeof" class="anchored"><td class="def constructor"><a href="#type-t.Dsizeof" class="anchor"></a><code>| </code><code><span class="constructor">Dsizeof</span> <span class="keyword">of</span> <a href="../IR/Typ/index.html#type-t">IR.Typ.t</a> * <span><a href="index.html#type-t">t</a> option</span> * <a href="../IR/Subtype/index.html#type-t">IR.Subtype.t</a></code></td></tr><tr id="type-t.Dderef" class="anchored"><td class="def constructor"><a href="#type-t.Dderef" class="anchor"></a><code>| </code><code><span class="constructor">Dderef</span> <span class="keyword">of</span> <a href="index.html#type-t">t</a></code></td></tr><tr id="type-t.Dfcall" class="anchored"><td class="def constructor"><a href="#type-t.Dfcall" class="anchor"></a><code>| </code><code><span class="constructor">Dfcall</span> <span class="keyword">of</span> <a href="index.html#type-t">t</a> * <span><a href="index.html#type-t">t</a> list</span> * <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> * <a href="../IR/CallFlags/index.html#type-t">IR.CallFlags.t</a></code></td></tr><tr id="type-t.Darrow" class="anchored"><td class="def constructor"><a href="#type-t.Darrow" class="anchor"></a><code>| </code><code><span class="constructor">Darrow</span> <span class="keyword">of</span> <a href="index.html#type-t">t</a> * <a href="../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a></code></td></tr><tr id="type-t.Ddot" class="anchored"><td class="def constructor"><a href="#type-t.Ddot" class="anchor"></a><code>| </code><code><span class="constructor">Ddot</span> <span class="keyword">of</span> <a href="index.html#type-t">t</a> * <a href="../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a></code></td></tr><tr id="type-t.Dpvar" class="anchored"><td class="def constructor"><a href="#type-t.Dpvar" class="anchor"></a><code>| </code><code><span class="constructor">Dpvar</span> <span class="keyword">of</span> <a href="../IR/Pvar/index.html#type-t">IR.Pvar.t</a></code></td></tr><tr id="type-t.Dpvaraddr" class="anchored"><td class="def constructor"><a href="#type-t.Dpvaraddr" class="anchor"></a><code>| </code><code><span class="constructor">Dpvaraddr</span> <span class="keyword">of</span> <a href="../IR/Pvar/index.html#type-t">IR.Pvar.t</a></code></td></tr><tr id="type-t.Dunop" class="anchored"><td class="def constructor"><a href="#type-t.Dunop" class="anchor"></a><code>| </code><code><span class="constructor">Dunop</span> <span class="keyword">of</span> <a href="../IR/Unop/index.html#type-t">IR.Unop.t</a> * <a href="index.html#type-t">t</a></code></td></tr><tr id="type-t.Dunknown" class="anchored"><td class="def constructor"><a href="#type-t.Dunknown" class="anchor"></a><code>| </code><code><span class="constructor">Dunknown</span></code></td></tr><tr id="type-t.Dretcall" class="anchored"><td class="def constructor"><a href="#type-t.Dretcall" class="anchor"></a><code>| </code><code><span class="constructor">Dretcall</span> <span class="keyword">of</span> <a href="index.html#type-t">t</a> * <span><a href="index.html#type-t">t</a> list</span> * <a href="../IBase/Location/index.html#type-t">IBase.Location.t</a> * <a href="../IR/CallFlags/index.html#type-t">IR.CallFlags.t</a></code></td></tr></table></dt><dd><p>expression representing the result of decompilation</p></dd></dl><dl><dt class="spec type" id="type-vpath"><a href="#type-vpath" class="anchor"></a><code><span class="keyword">type</span> vpath</code><code> = <span><a href="index.html#type-t">t</a> option</span></code></dt><dd><p>Value paths: identify an occurrence of a value in a symbolic heap each expression represents a path, with Dpvar being the simplest one</p></dd></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <a href="index.html#module-F">F</a>.formatter <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-to_string"><a href="#val-to_string" class="anchor"></a><code><span class="keyword">val</span> to_string : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> string</code></dt><dd><p>convert to a string</p></dd></dl><dl><dt class="spec value" id="val-pp_vpath"><a href="#val-pp_vpath" class="anchor"></a><code><span class="keyword">val</span> pp_vpath : <a href="../IStdlib/Pp/index.html#type-env">IStdlib.Pp.env</a> <span>&#45;&gt;</span> <a href="index.html#module-F">F</a>.formatter <span>&#45;&gt;</span> <a href="index.html#type-vpath">vpath</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Pretty print a value path</p></dd></dl><dl><dt class="spec value" id="val-has_tmp_var"><a href="#val-has_tmp_var" class="anchor"></a><code><span class="keyword">val</span> has_tmp_var : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>return true if <code>dexp</code> contains a temporary pvar</p></dd></dl></div></body></html>