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>InferModules__ProcCfg (infer.InferModules__ProcCfg)</title><linkrel="stylesheet"href="../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc %%VERSION%%"/><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>» InferModules__ProcCfg</nav><h1>Module <code>InferModules__ProcCfg</code></h1><p>Control-flow graph for a single procedure (as opposed to cfg.ml, which represents a cfg for a file). Defines useful wrappers that allows us to do tricks like turn a forward cfg to into a backward one, or view a cfg as having a single instruction per block</p></header><divclass="spec module-type"id="module-type-Node"><ahref="#module-type-Node"class="anchor"></a><code><spanclass="keyword">module</span><spanclass="keyword">type</span><ahref="module-type-Node/index.html">Node</a> = <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><divclass="spec module-type"id="module-type-S"><ahref="#module-type-S"class="anchor"></a><code><spanclass="keyword">module</span><spanclass="keyword">type</span><ahref="module-type-S/index.html">S</a> = <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><divclass="spec module"id="module-DefaultNode"><ahref="#module-DefaultNode"class="anchor"></a><code><spanclass="keyword">module</span><ahref="DefaultNode/index.html">DefaultNode</a> : <ahref="index.html#module-type-Node">Node</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="module-type-Node/index.html#type-t">t</a> = <ahref="../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a><spanclass="keyword">and</span><spanclass="keyword">type</span><ahref="module-type-Node/index.html#type-id">id</a> = <ahref="../../InferIR/InferIR/Procdesc/Node/index.html#type-id">InferIR.Procdesc.Node.id</a></code></div><divclass="spec module"id="module-InstrNode"><ahref="#module-InstrNode"class="anchor"></a><code><spanclass="keyword">module</span><ahref="InstrNode/index.html">InstrNode</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><dl><dtclass="spec module"id="module-Normal"><ahref="#module-Normal"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Normal/index.html">Normal</a> : <ahref="index.html#module-type-S">S</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="module-type-S/index.html#type-t">t</a> = <ahref="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a><spanclass="keyword">and</span><spanclass="keyword">module</span><ahref="module-type-S/Node/index.html">Node</a> = <ahref="index.html#module-DefaultNode">DefaultNode</a><spanclass="keyword">and</span><spanclass="keyword">type</span><ahref="module-type-S/index.html#type-instrs_dir">instrs_dir</a> = <ahref="../../InferIR/InferIR/Instrs/index.html#type-not_reversed">InferIR.Instrs.not_reversed</a></code></dt><dd><p>Forward CFG with no exceptional control-flow</p></dd></dl><dl><dtclass="spec module"id="module-Exceptional"><ahref="#module-Exceptional"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Exceptional/index.html">Exceptional</a> : <ahref="index.html#module-type-S">S</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="module-type-S/index.html#type-t">t</a> = <ahref="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> * <span><span><ahref="DefaultNode/index.html#type-t">DefaultNode.t</a> list</span><ahref="../../InferIR/InferIR__Procdesc/index.html#module-IdMap">InferIR.Procdesc.IdMap</a>.t</span><spanclass="keyword">and</span><spanclass="keyword">module</span><ahref="module-type-S/Node/index.html">Node</a> = <ahref="index.html#module-DefaultNode">DefaultNode</a><spanclass="keyword">and</span><spanclass="keyword">type</span><ahref="module-type-S/index.html#type-instrs_dir">instrs_dir</a> = <ahref="../../InferIR/InferIR/Instrs/index.html#type-not_reversed">InferIR.Instrs.not_reversed</a></code></dt><dd><p>Forward CFG with exceptional control-flow</p></dd></dl><dl><dtclass="spec module"id="module-Backward"><ahref="#module-Backward"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Backward/index.html">Backward</a> : <spanclass="keyword">functor</span> (<ahref="Backward/argument-1-Base/index.html">Base</a> : <ahref="index.html#module-type-S">S</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="Backward/index.html#type-instrs_dir">instrs_dir</a> = <ahref="../../InferIR/InferIR/Instrs/index.html#type-not_reversed">InferIR.Instrs.not_reversed</a>) <span>-></span><ahref="index.html#module-type-S">S</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="Backward/index.html#type-t">t</a> = <ahref="Backward/argument-1-Base/index.html#type-t">Base.t</a><spanclass="keyword">and</span><spanclass="keyword">module</span><ahref="Backward/Node/index.html">Node</a> = <ahref="Backward/argument-1-Base/index.html#module-Node">Base.Node</a><spanclass="keyword">and</span><spanclass="keyword">type</span><ahref="Backward/index.html#type-instrs_dir">instrs_dir</a> = <ahref="../../InferIR/InferIR/Instrs/index.html#type-reversed">InferIR.Instrs.reversed</a></code></dt><dd><p>Wrapper that reverses the direction of the CFG</p></dd></dl><divclass="spec module"id="module-OneInstrPerNode"><ahref="#module-OneInstrPerNode"class="anchor"></a><code><spanclass="keyword">module</span><ahref="OneInstrPerNode/index.html">OneInstrPerNode</a> : <spanclass="keyword">functor</span> (<ahref="OneInstrPerNode/argument-1-Base/index.html">Base</a> : <ahref="index.html#module-type-S">S</a><spanclass="keyword">with</span><spanclass="keyword">module</span><ahref="OneInstrPerNode/Node/index.html">Node</a> = <ahref="index.html#module-DefaultNode">DefaultNode</a>) <span>-></span><spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><divclass="spec module"id="module-NormalOneInstrPerNode"><ahref="#module-NormalOneInstrPerNode"class="anchor"></a><code><spanclass="keyword">module</span><ahref="NormalOneInstrPerNode/index.html">NormalOneInstrPerNode</a> : <spanclass="keyword">module</span><spanclass="keyword">type</span><spanclass="keyword">of</span><spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><divclass="spec module"id="module-MakeOcamlGraph"><ahref="#module-MakeOcamlGraph"class="anchor"></a><code><spanclass="keyword">module</span><ahref="MakeOcamlGraph/index.html">MakeOcamlGraph</a> : <spanclass="keyword">functor</span> (<ahref="MakeOcamlGraph/argument-1-Base/index.html">Base</a> : <ahref="index.html#module-type-S">S</a>) <span>-></span><spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div></div></body></html>