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.

3 lines
7.5 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferModules__SymExec (infer.InferModules__SymExec)</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__SymExec</span></h1></header><p>Symbolic Execution</p><div class="spec val" id="val-node"><a href="#val-node" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>node : (exn <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Exe_env/index.html#type-t">InferModules.Exe_env.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/ProcCfg/Exceptional/index.html#type-t">InferModules.ProcCfg.Exceptional.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules__ProcCfg/DefaultNode/index.html#type-t">InferModules.ProcCfg.Exceptional.Node.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Paths/PathSet/index.html#type-t">InferModules.Paths.PathSet.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Paths/PathSet/index.html#type-t">InferModules.Paths.PathSet.t</a></code></div><div class="doc"><p>Symbolic execution of the instructions of a node, lifted to sets of propositions.</p></div></div><div class="spec val" id="val-instrs"><a href="#val-instrs" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>instrs : ?&#8288;mask_errors:bool <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Exe_env/index.html#type-t">InferModules.Exe_env.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Instrs/index.html#type-not_reversed_t">InferIR.Instrs.not_reversed_t</a> <span class="keyword">&#8209;&gt;</span> (<a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a><span class="keyword"> * </span><a href="../InferModules/Paths/Path/index.html#type-t">InferModules.Paths.Path.t</a>) list <span class="keyword">&#8209;&gt;</span> (<a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a><span class="keyword"> * </span><a href="../InferModules/Paths/Path/index.html#type-t">InferModules.Paths.Path.t</a>) list</code></div><div class="doc"><p>Symbolic execution of a sequence of instructions.
If errors occur and <code class="code">mask_errors</code> is true, just treat as skip.</p></div></div><div class="spec val" id="val-diverge"><a href="#val-diverge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>diverge : <a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Paths/Path/index.html#type-t">InferModules.Paths.Path.t</a> <span class="keyword">&#8209;&gt;</span> (<a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a><span class="keyword"> * </span><a href="../InferModules/Paths/Path/index.html#type-t">InferModules.Paths.Path.t</a>) list</code></div><div class="doc"><p>Symbolic execution of the divergent pure computation.</p></div></div><div class="spec val" id="val-proc_call"><a href="#val-proc_call" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>proc_call : <a href="../InferModules/Exe_env/index.html#type-t">InferModules.Exe_env.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Summary/index.html#type-t">InferModules.Summary.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Builtin/index.html#type-t">InferModules.Builtin.t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-unknown_or_scan_call"><a href="#val-unknown_or_scan_call" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>unknown_or_scan_call : is_scan:bool <span class="keyword">&#8209;&gt;</span> reason:string <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Annot/Item/index.html#type-t">InferIR.Annot.Item.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Builtin/index.html#type-t">InferModules.Builtin.t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-check_variadic_sentinel"><a href="#val-check_variadic_sentinel" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>check_variadic_sentinel : ?&#8288;fails_on_nil:bool <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> (int<span class="keyword"> * </span>int) <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Builtin/index.html#type-t">InferModules.Builtin.t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-check_arith_norm_exp"><a href="#val-check_arith_norm_exp" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>check_arith_norm_exp : <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a><span class="keyword"> * </span><a href="../InferModules/Prop/index.html#type-normal">InferModules.Prop.normal</a> <a href="../InferModules/Prop/index.html#type-t">InferModules.Prop.t</a></code></div><div class="doc"><p>Check for arithmetic problems and normalize an expression.</p></div></div><div class="spec val" id="val-prune"><a href="#val-prune" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>prune : <a href="../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> positive:bool <span class="keyword">&#8209;&gt;</span> <a href="../../InferIR/I