This file is indexed.

/usr/share/doc/mlton/guide/Shrink is in mlton-doc 20100608-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta name="robots" content="index,nofollow">



<title>Shrink - MLton Standard ML Compiler (SML Compiler)</title>
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="common.css">
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="screen.css">
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="print.css">


<link rel="Start" href="Home">


</head>

<body lang="en" dir="ltr">

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-833377-1";
urchinTracker();
</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
  <tr>
    <td style = "
		border: 0px;
		color: darkblue; 
		font-size: 150%;
		text-align: left;">
      <a class = mltona href="Home">MLton MLTONWIKIVERSION</a>
    <td style = "
		border: 0px;
		font-size: 150%;
		text-align: center;
		width: 50%;">
      Shrink
    <td style = "
		border: 0px;
		text-align: right;">
      <table cellspacing = 0 style = "border: 0px">
        <tr style = "vertical-align: middle;">
      </table>
  <tr style = "background-color: white;">
    <td colspan = 3
	style = "
		border: 0px;
		font-size:70%;
		text-align: right;">
      <a href = "Home">Home</a>
      &nbsp;<a href = "TitleIndex">Index</a>
      &nbsp;
</table>
<div id="content" lang="en" dir="ltr">
Shrink is a rewrite pass for the <a href="SSA">SSA</a> and <a href="SSA2">SSA2</a> <a href="IntermediateLanguage">IntermediateLanguage</a>s, invoked from every optimization pass (see <a href="SSASimplify">SSASimplify</a> and <a href="SSA2Simplify">SSA2Simplify</a>). <h2 id="head-55f8ebc805e65b5b71ddafdae390e3be2bcd69af">Description</h2>
<p>
This pass implements a whole family of compile-time reductions, like: 
</p>

    <ul>

    <li>
<p>
 <tt>#1(a,&nbsp;b)&nbsp;--&gt;&nbsp;a</tt> 
</p>
</li>
    <li>
<p>
 <tt>case&nbsp;C&nbsp;x&nbsp;of&nbsp;C&nbsp;y&nbsp;=&gt;&nbsp;e&nbsp;&nbsp;--&gt;&nbsp;let&nbsp;y&nbsp;=&nbsp;x&nbsp;in&nbsp;e</tt> 
</p>
</li>
    <li>
<p>
 constant folding, copy propagation 
</p>
</li>
    <li>
<p>
 eta blocks 
</p>
</li>
    <li>
<p>
 tuple reconstruction elimination 
</p>
</li>

    </ul>


<h2 id="head-8781d615fd77be9578225c40ac67b9471394cced">Implementation</h2>
<p>
<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/ssa/shrink.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">shrink.sig</a> <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/ssa/shrink.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">shrink.fun</a><br>
 <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/ssa/shrink2.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">shrink2.sig</a> <a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-MLTONWIKIVERSION-release/mlton/ssa/shrink2.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">shrink2.fun</a> 
</p>
<h2 id="head-35ec00231a68203708e39f0e2cc10b50c6bf62de">Details and Notes</h2>
<p>
The Shrink pass is run after every <a href="SSA">SSA</a> and <a href="SSA2">SSA2</a> optimization pass. 
</p>
<p>
The Shrink implementation also includes functions to eliminate unreachable blocks from a <a href="SSA">SSA</a> or <a href="SSA2">SSA2</a> program or function. The Shrink pass does not guarantee to eliminate all unreachable blocks.  Doing so would unduly complicate the implementation, and it is almost always the case that all unreachable blocks are eliminated. However, a small number of optimization passes require that the input have no unreachable blocks (essentially, when the analysis works on the control flow graph and the rewrite iterates on the vector of blocks).  These passes explicitly call <tt>eliminateDeadBlocks</tt>. 
</p>
<p>
The Shrink pass has a special case to turn a non-tail call where the continuation and handler only do <tt>Profile</tt> statements into a tail call where the <tt>Profile</tt> statements precede the tail call. 
</p>
</div>



<p>
<hr>
Last edited on 2006-11-02 17:52:51 by <span title="76.16.241.4"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>