You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4 lines
7.1 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ProcCfg (infer.InferModules.ProcCfg)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> &mdash; <span class="package">package <a href="../../index.html">infer</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferModules.ProcCfg</span></h1></header><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><div class="spec module-type" id="module-type-Node"><a href="#module-type-Node" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-Node/index.html">Node</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-S/index.html">S</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-DefaultNode"><a href="#module-DefaultNode" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="DefaultNode/index.html">DefaultNode</a> : <a href="index.html#module-type-Node">Node</a><span class="keyword"> with </span><span class="keyword">type </span><a href="module-type-Node/index.html#type-t">t</a><span class="keyword"> = </span><a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a><span class="keyword"> and </span><span class="keyword">type </span><a href="module-type-Node/index.html#type-id">id</a><span class="keyword"> = </span><a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-id">InferIR.Procdesc.Node.id</a></code></div><div class="doc"></div></div><div class="spec module" id="module-InstrNode"><a href="#module-InstrNode" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="InstrNode/index.html">InstrNode</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-Normal"><a href="#module-Normal" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Normal/index.html">Normal</a> : <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="module-type-S/index.html#type-t">t</a><span class="keyword"> = </span><a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a><span class="keyword"> and </span><span class="keyword">module </span><a href="module-type-S/Node/index.html">Node</a> = <a href="index.html#module-DefaultNode">DefaultNode</a><span class="keyword"> and </span><span class="keyword">type </span><a href="module-type-S/index.html#type-instrs_dir">instrs_dir</a><span class="keyword"> = </span><a href="../../../InferIR/InferIR/Instrs/index.html#type-not_reversed">InferIR.Instrs.not_reversed</a></code></div><div class="doc"><p>Forward CFG with no exceptional control-flow</p></div></div><div class="spec module" id="module-Exceptional"><a href="#module-Exceptional" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Exceptional/index.html">Exceptional</a> : <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="module-type-S/index.html#type-t">t</a><span class="keyword"> = </span><a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a><span class="keyword"> * </span><a href="DefaultNode/index.html#type-t">DefaultNode.t</a> list <a href="../../../InferIR/InferIR__Procdesc/index.html#module-IdMap">InferIR.Procdesc.IdMap</a>.t<span class="keyword"> and </span><span class="keyword">module </span><a href="module-type-S/Node/index.html">Node</a> = <a href="index.html#module-DefaultNode">DefaultNode</a><span class="keyword"> and </span><span class="keyword">type </span><a href="module-type-S/index.html#type-instrs_dir">instrs_dir</a><span class="keyword"> = </span><a href="../../../InferIR/InferIR/Instrs/index.html#type-not_reversed">InferIR.Instrs.not_reversed</a></code></div><div class="doc"><p>Forward CFG with exceptional control-flow</p></div></div><div class="spec module" id="module-Backward"><a href="#module-Backward" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Backward/index.html">Backward</a> : <span class="keyword">functor</span> (<a href="Backward/argument-1-Base/index.html">Base</a> : <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="Backward/index.html#type-instrs_dir">instrs_dir</a><span class="keyword"> = </span><a href="../../../InferIR/InferIR/Instrs/index.html#type-not_reversed">InferIR.Instrs.not_reversed</a>) -&gt; <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="Backward/index.html#type-t">t</a><span class="keyword"> = </span><a href="Backward/argument-1-Base/index.html#type-t">Base.t</a><span class="keyword"> and </span><span class="keyword">module </span><a href="Backward/Node/index.html">Node</a> = <a href="Backward/argument-1-Base/index.html#module-Node">Base.Node</a><span class="keyword"> and </span><span class="keyword">type </span><a href="Backward/index.html#type-instrs_dir">instrs_dir</a><span class="keyword"> = </span><a href="../../../InferIR/InferIR/Instrs/index.html#type-reversed">InferIR.Instrs.reversed</a></code></div><div class="doc"><p>Wrapper that reverses the direction of the CFG</p></div></div><div class="spec module" id="module-OneInstrPerNode"><a href="#module-OneInstrPerNode" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="OneInstrPerNode/index.html">OneInstrPerNode</a> : <span class="keyword">functor</span> (<a href="OneInstrPerNode/argument-1-Base/index.html">Base</a> : <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">module </span><a href="OneInstrPerNode/Node/index.html">Node</a> = <a href="index.html#module-DefaultNode">DefaultNode</a>) -&gt; <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-NormalOneInstrPerNode"><a href="#module-NormalOneInstrPerNode" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="NormalOneInstrPerNode/index.html">NormalOneInstrPerNode</a> : <span class="keyword">module type of </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div></body></html>