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.

2 lines
4.1 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferIR__Cfg (InferIR.InferIR__Cfg)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc %%VERSION%%"/><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">InferIR</a> &#x00BB; InferIR__Cfg</nav><h1>Module <code>InferIR__Cfg</code></h1><p>Control Flow Graph for Interprocedural Analysis</p><nav class="toc"><ul><li><a href="#functions-for-manipulating-an-interprocedural-cfg">Functions for manipulating an interprocedural CFG</a></li></ul></nav></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <span><a href="../InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <a href="../InferIR__Typ/Procname/index.html#module-Hash">InferIR.Typ.Procname.Hash</a>.t</span></code></dt><dd><p>A control-flow graph is a collection of all the CFGs for the procedure names in a file</p></dd></dl><dl><dt class="spec value" id="val-get_all_defined_proc_names"><a href="#val-get_all_defined_proc_names" class="anchor"></a><code><span class="keyword">val</span> get_all_defined_proc_names : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <span><a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> list</span></code></dt><dd><p>get all the procedure names that are defined in the current file</p></dd></dl><dl><dt class="spec value" id="val-store"><a href="#val-store" class="anchor"></a><code><span class="keyword">val</span> store : <a href="../../InferBase/InferBase/SourceFile/index.html#type-t">InferBase.SourceFile.t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Save the individual <code>Procdesc.t</code> and <code>ProcAttributes.t</code> to the database for the procedures in the cfg.</p></dd></dl><section><header><h3 id="functions-for-manipulating-an-interprocedural-cfg"><a href="#functions-for-manipulating-an-interprocedural-cfg" class="anchor"></a>Functions for manipulating an interprocedural CFG</h3></header><dl><dt class="spec value" id="val-create"><a href="#val-create" class="anchor"></a><code><span class="keyword">val</span> create : unit <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dd><p>create a new empty cfg</p></dd></dl><dl><dt class="spec value" id="val-create_proc_desc"><a href="#val-create_proc_desc" class="anchor"></a><code><span class="keyword">val</span> create_proc_desc : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="../InferIR/ProcAttributes/index.html#type-t">InferIR.ProcAttributes.t</a> <span>&#45;&gt;</span> <a href="../InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a></code></dt><dd><p>Create a new procdesc and add it to the cfg</p></dd></dl><dl><dt class="spec value" id="val-iter_sorted"><a href="#val-iter_sorted" class="anchor"></a><code><span class="keyword">val</span> iter_sorted : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <span>f:<span>(<a href="../InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>&#45;&gt;</span> unit)</span></span> <span>&#45;&gt;</span> unit</code></dt><dd><p>Iterate over all the proc descs in the cfg in ascending order</p></dd></dl><dl><dt class="spec value" id="val-inline_java_synthetic_methods"><a href="#val-inline_java_synthetic_methods" class="anchor"></a><code><span class="keyword">val</span> inline_java_synthetic_methods : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Inline the java synthetic methods in the cfg (in-place)</p></dd></dl><dl><dt class="spec value" id="val-pp_proc_signatures"><a href="#val-pp_proc_signatures" class="anchor"></a><code><span class="keyword">val</span> pp_proc_signatures : Stdlib.Format.formatter <span>&#45;&gt;</span> <a href="index.html#typ