<!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>DeadCode - 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">

<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 20051202</a>
    <td style = "
		border: 0px;
		font-size: 150%;
		text-align: center;
		width: 50%;">
      DeadCode
    <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 = "Index">Index</a>
      &nbsp;
</table>
<div id="content" lang="en" dir="ltr">
Dead-code elimination is an optimization pass for the <a href="CoreML">CoreML</a> <a href="IntermediateLanguage">IntermediateLanguage</a>, invoked from <a href="CoreMLSimplify">CoreMLSimplify</a>. <h2 id="head-55f8ebc805e65b5b71ddafdae390e3be2bcd69af">Description</h2>
<p>
This pass eliminates declarations from the  <a href="BasisLibrary">Basis Library</a> not needed by the user program. 
</p>
<h2 id="head-8781d615fd77be9578225c40ac67b9471394cced">Implementation</h2>

<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/core-ml/dead-code.sig?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">dead-code.sig</a>
 
<a href = "http://mlton.org/cgi-bin/viewsvn.cgi/mlton/tags/on-20051202-release/mlton/core-ml/dead-code.fun?view=markup"><img src="moin-www.png" alt="[WWW]" height="11" width="11">dead-code.fun</a>
 <h2 id="head-35ec00231a68203708e39f0e2cc10b50c6bf62de">Details and Notes</h2>
<p>
In order to compile small programs rapidly, a pass of dead code elimination is run in order to eliminate as much of the Basis Library as possible.  The dead code elimination algorithm used is not safe in general, and only works because the Basis Library implementation has special properties: 
</p>

        <ul>

        <li>
<p>
 it terminates 
</p>
</li>
        <li>
<p>
 it performs no I/O 
</p>
</li>

        </ul>


<p>
The dead code elimination includes the minimal set of declarations from the Basis Library so that there are no free variables in the user program (or remaining Basis Library implementation).  It has a special hack to include all  bindings of the form: 
<pre> val _ = ...
</pre>
</p>
<p>
There is an <a href="MLBasisAnnotations">ML Basis annotation</a>,  <tt>deadCode&nbsp;true</tt>,  that governs which code is subject to this unsafe dead-code elimination. 
</p>
</div>



<p>
<hr>
Last edited on 2005-12-01 03:28:11 by <span title="ppp-71-139-183-221.dsl.snfc21.pacbell.net"><a href="StephenWeeks">StephenWeeks</a></span>.
</body></html>
