Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / doc / guide / localhost / SSASimplify
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <meta name="generator" content="AsciiDoc 8.6.9">
6 <title>SSASimplify</title>
7 <link rel="stylesheet" href="./asciidoc.css" type="text/css">
8 <link rel="stylesheet" href="./pygments.css" type="text/css">
9
10
11 <script type="text/javascript" src="./asciidoc.js"></script>
12 <script type="text/javascript">
13 /*<![CDATA[*/
14 asciidoc.install();
15 /*]]>*/
16 </script>
17 <link rel="stylesheet" href="./mlton.css" type="text/css">
18 </head>
19 <body class="article">
20 <div id="banner">
21 <div id="banner-home">
22 <a href="./Home">MLton 20180207</a>
23 </div>
24 </div>
25 <div id="header">
26 <h1>SSASimplify</h1>
27 </div>
28 <div id="content">
29 <div id="preamble">
30 <div class="sectionbody">
31 <div class="paragraph"><p>The optimization passes for the <a href="SSA">SSA</a> <a href="IntermediateLanguage">IntermediateLanguage</a> are
32 collected and controlled by the <span class="monospaced">Simplify</span> functor
33 (<a href="https://github.com/MLton/mlton/blob/master/mlton/ssa/simplify.sig"><span class="monospaced">simplify.sig</span></a>,
34 <a href="https://github.com/MLton/mlton/blob/master/mlton/ssa/simplify.fun"><span class="monospaced">simplify.fun</span></a>).</p></div>
35 <div class="paragraph"><p>The following optimization passes are implemented:</p></div>
36 <div class="ulist"><ul>
37 <li>
38 <p>
39 <a href="CombineConversions">CombineConversions</a>
40 </p>
41 </li>
42 <li>
43 <p>
44 <a href="CommonArg">CommonArg</a>
45 </p>
46 </li>
47 <li>
48 <p>
49 <a href="CommonBlock">CommonBlock</a>
50 </p>
51 </li>
52 <li>
53 <p>
54 <a href="CommonSubexp">CommonSubexp</a>
55 </p>
56 </li>
57 <li>
58 <p>
59 <a href="ConstantPropagation">ConstantPropagation</a>
60 </p>
61 </li>
62 <li>
63 <p>
64 <a href="Contify">Contify</a>
65 </p>
66 </li>
67 <li>
68 <p>
69 <a href="Flatten">Flatten</a>
70 </p>
71 </li>
72 <li>
73 <p>
74 <a href="Inline">Inline</a>
75 </p>
76 </li>
77 <li>
78 <p>
79 <a href="IntroduceLoops">IntroduceLoops</a>
80 </p>
81 </li>
82 <li>
83 <p>
84 <a href="KnownCase">KnownCase</a>
85 </p>
86 </li>
87 <li>
88 <p>
89 <a href="LocalFlatten">LocalFlatten</a>
90 </p>
91 </li>
92 <li>
93 <p>
94 <a href="LocalRef">LocalRef</a>
95 </p>
96 </li>
97 <li>
98 <p>
99 <a href="LoopInvariant">LoopInvariant</a>
100 </p>
101 </li>
102 <li>
103 <p>
104 <a href="LoopUnfoll">LoopUnfoll</a>
105 </p>
106 </li>
107 <li>
108 <p>
109 <a href="LoopUnswitch">LoopUnswitch</a>
110 </p>
111 </li>
112 <li>
113 <p>
114 <a href="Redundant">Redundant</a>
115 </p>
116 </li>
117 <li>
118 <p>
119 <a href="RedundantTests">RedundantTests</a>
120 </p>
121 </li>
122 <li>
123 <p>
124 <a href="RemoveUnused">RemoveUnused</a>
125 </p>
126 </li>
127 <li>
128 <p>
129 <a href="ShareZeroVec">ShareZeroVec</a>
130 </p>
131 </li>
132 <li>
133 <p>
134 <a href="SimplifyTypes">SimplifyTypes</a>
135 </p>
136 </li>
137 <li>
138 <p>
139 <a href="Useless">Useless</a>
140 </p>
141 </li>
142 </ul></div>
143 <div class="paragraph"><p>The following implementation passes are implemented:</p></div>
144 <div class="ulist"><ul>
145 <li>
146 <p>
147 <a href="PolyEqual">PolyEqual</a>
148 </p>
149 </li>
150 <li>
151 <p>
152 <a href="PolyHash">PolyHash</a>
153 </p>
154 </li>
155 </ul></div>
156 <div class="paragraph"><p>There are additional analysis and rewrite passes that augment many of the other optimization passes:</p></div>
157 <div class="ulist"><ul>
158 <li>
159 <p>
160 <a href="Multi">Multi</a>
161 </p>
162 </li>
163 <li>
164 <p>
165 <a href="Restore">Restore</a>
166 </p>
167 </li>
168 <li>
169 <p>
170 <a href="Shrink">Shrink</a>
171 </p>
172 </li>
173 </ul></div>
174 <div class="paragraph"><p>The optimization passes can be controlled from the command-line by the options:</p></div>
175 <div class="ulist"><ul>
176 <li>
177 <p>
178 <span class="monospaced">-diag-pass &lt;pass&gt;</span>&#8201;&#8212;&#8201;keep diagnostic info for pass
179 </p>
180 </li>
181 <li>
182 <p>
183 <span class="monospaced">-disable-pass &lt;pass&gt;</span>&#8201;&#8212;&#8201;skip optimization pass (if normally performed)
184 </p>
185 </li>
186 <li>
187 <p>
188 <span class="monospaced">-enable-pass &lt;pass&gt;</span>&#8201;&#8212;&#8201;perform optimization pass (if normally skipped)
189 </p>
190 </li>
191 <li>
192 <p>
193 <span class="monospaced">-keep-pass &lt;pass&gt;</span>&#8201;&#8212;&#8201;keep the results of pass
194 </p>
195 </li>
196 <li>
197 <p>
198 <span class="monospaced">-loop-passes &lt;n&gt;</span>&#8201;&#8212;&#8201;loop optimization passes
199 </p>
200 </li>
201 <li>
202 <p>
203 <span class="monospaced">-ssa-passes &lt;passes&gt;</span>&#8201;&#8212;&#8201;ssa optimization passes
204 </p>
205 </li>
206 </ul></div>
207 </div>
208 </div>
209 </div>
210 <div id="footnotes"><hr></div>
211 <div id="footer">
212 <div id="footer-text">
213 </div>
214 <div id="footer-badges">
215 </div>
216 </div>
217 </body>
218 </html>