Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / src / LoopInvariant.adoc
1 LoopInvariant
2 =============
3
4 <:LoopInvariant:> is an optimization pass for the <:SSA:>
5 <:IntermediateLanguage:>, invoked from <:SSASimplify:>.
6
7 == Description ==
8
9 This pass removes loop invariant arguments to local loops.
10
11 ----
12 loop (x, y)
13 ...
14 ...
15 loop (x, z)
16 ...
17 ----
18
19 becomes
20
21 ----
22 loop' (x, y)
23 loop (y)
24 loop (y)
25 ...
26 ...
27 loop (z)
28 ...
29 ----
30
31 == Implementation ==
32
33 * <!ViewGitFile(mlton,master,mlton/ssa/loop-invariant.fun)>
34
35 == Details and Notes ==
36
37 {empty}