blob: fa0347640fe8c70aac5dd9407c6cc5c490327883 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
<html><head>
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="Start" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of class methods" rel=Appendix href="index_methods.html">
<link title="Index of classes" rel=Appendix href="index_classes.html">
<link title="Index of class types" rel=Appendix href="index_class_types.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Index of module types" rel=Appendix href="index_module_types.html">
<link title="Pretty" rel="Chapter" href="Pretty.html">
<link title="Errormsg" rel="Chapter" href="Errormsg.html">
<link title="Clist" rel="Chapter" href="Clist.html">
<link title="Stats" rel="Chapter" href="Stats.html">
<link title="Cil" rel="Chapter" href="Cil.html">
<link title="Formatcil" rel="Chapter" href="Formatcil.html">
<link title="Alpha" rel="Chapter" href="Alpha.html">
<link title="Cillower" rel="Chapter" href="Cillower.html">
<link title="Cfg" rel="Chapter" href="Cfg.html">
<link title="Dataflow" rel="Chapter" href="Dataflow.html">
<link title="Dominators" rel="Chapter" href="Dominators.html"><title>CIL API Documentation (version 1.3.5) : Dataflow</title>
</head>
<body>
<code class="code"><span class="keyword">sig</span><br>
<span class="keyword">type</span> <span class="keywordsign">'</span>a action = <span class="constructor">Default</span> <span class="keywordsign">|</span> <span class="constructor">Done</span> <span class="keyword">of</span> <span class="keywordsign">'</span>a <span class="keywordsign">|</span> <span class="constructor">Post</span> <span class="keyword">of</span> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a)<br>
<span class="keyword">type</span> <span class="keywordsign">'</span>a stmtaction = <span class="constructor">SDefault</span> <span class="keywordsign">|</span> <span class="constructor">SDone</span> <span class="keywordsign">|</span> <span class="constructor">SUse</span> <span class="keyword">of</span> <span class="keywordsign">'</span>a<br>
<span class="keyword">type</span> <span class="keywordsign">'</span>a guardaction = <span class="constructor">GDefault</span> <span class="keywordsign">|</span> <span class="constructor">GUse</span> <span class="keyword">of</span> <span class="keywordsign">'</span>a <span class="keywordsign">|</span> <span class="constructor">GUnreachable</span><br>
<span class="keyword">module</span> <span class="keyword">type</span> <span class="constructor">ForwardsTransfer</span> =<br>
<span class="keyword">sig</span><br>
<span class="keyword">val</span> name : string<br>
<span class="keyword">val</span> debug : bool <span class="constructor">Pervasives</span>.ref<br>
<span class="keyword">type</span> t<br>
<span class="keyword">val</span> copy : <span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="keywordsign">-></span> <span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t<br>
<span class="keyword">val</span> stmtStartData : <span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="constructor">Inthash</span>.t<br>
<span class="keyword">val</span> pretty : unit <span class="keywordsign">-></span> <span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="keywordsign">-></span> <span class="constructor">Pretty</span>.doc<br>
<span class="keyword">val</span> computeFirstPredecessor :<br>
<span class="constructor">Cil</span>.stmt <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="keywordsign">-></span> <span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t<br>
<span class="keyword">val</span> combinePredecessors :<br>
<span class="constructor">Cil</span>.stmt <span class="keywordsign">-></span><br>
old:<span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="keywordsign">-></span> <span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t option<br>
<span class="keyword">val</span> doInstr :<br>
<span class="constructor">Cil</span>.instr <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="constructor">Dataflow</span>.action<br>
<span class="keyword">val</span> doStmt :<br>
<span class="constructor">Cil</span>.stmt <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="constructor">Dataflow</span>.stmtaction<br>
<span class="keyword">val</span> doGuard :<br>
<span class="constructor">Cil</span>.exp <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">ForwardsTransfer</span>.t <span class="constructor">Dataflow</span>.guardaction<br>
<span class="keyword">val</span> filterStmt : <span class="constructor">Cil</span>.stmt <span class="keywordsign">-></span> bool<br>
<span class="keyword">end</span><br>
<span class="keyword">module</span> <span class="constructor">ForwardsDataFlow</span> :<br>
<span class="keyword">functor</span> (<span class="constructor">T</span> : <span class="constructor">ForwardsTransfer</span>) <span class="keywordsign">-></span><br>
<span class="keyword">sig</span> <span class="keyword">val</span> compute : <span class="constructor">Cil</span>.stmt list <span class="keywordsign">-></span> unit <span class="keyword">end</span><br>
<span class="keyword">module</span> <span class="keyword">type</span> <span class="constructor">BackwardsTransfer</span> =<br>
<span class="keyword">sig</span><br>
<span class="keyword">val</span> name : string<br>
<span class="keyword">val</span> debug : bool <span class="constructor">Pervasives</span>.ref<br>
<span class="keyword">type</span> t<br>
<span class="keyword">val</span> pretty : unit <span class="keywordsign">-></span> <span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t <span class="keywordsign">-></span> <span class="constructor">Pretty</span>.doc<br>
<span class="keyword">val</span> stmtStartData : <span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t <span class="constructor">Inthash</span>.t<br>
<span class="keyword">val</span> combineStmtStartData :<br>
<span class="constructor">Cil</span>.stmt <span class="keywordsign">-></span><br>
old:<span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t <span class="keywordsign">-></span> <span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t option<br>
<span class="keyword">val</span> combineSuccessors :<br>
<span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t <span class="keywordsign">-></span> <span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t<br>
<span class="keyword">val</span> doStmt : <span class="constructor">Cil</span>.stmt <span class="keywordsign">-></span> <span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t <span class="constructor">Dataflow</span>.action<br>
<span class="keyword">val</span> doInstr :<br>
<span class="constructor">Cil</span>.instr <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t <span class="keywordsign">-></span><br>
<span class="constructor">Dataflow</span>.<span class="constructor">BackwardsTransfer</span>.t <span class="constructor">Dataflow</span>.action<br>
<span class="keyword">val</span> filterStmt : <span class="constructor">Cil</span>.stmt <span class="keywordsign">-></span> <span class="constructor">Cil</span>.stmt <span class="keywordsign">-></span> bool<br>
<span class="keyword">end</span><br>
<span class="keyword">module</span> <span class="constructor">BackwardsDataFlow</span> :<br>
<span class="keyword">functor</span> (<span class="constructor">T</span> : <span class="constructor">BackwardsTransfer</span>) <span class="keywordsign">-></span><br>
<span class="keyword">sig</span> <span class="keyword">val</span> compute : <span class="constructor">Cil</span>.stmt list <span class="keywordsign">-></span> unit <span class="keyword">end</span><br>
<span class="keyword">end</span></code></body></html>
|