* Use UTF-8 instead of soon-to-be-extinct ISO-8859-1 ;)
[oota-llvm.git] / docs / OpenProjects.html
index b79c0aae92e18ae97abe03360d1aeaf43702c1f3..5f648374d1a5539e5340adb6bfbc89b848a3314c 100644 (file)
@@ -92,12 +92,13 @@ could use the following improvements:<p>
 
 <li>Graphs - It would be great to have gnuplot graphs to keep track of how the
     tree is changing over time.  We already gather a several statistics, it
 
 <li>Graphs - It would be great to have gnuplot graphs to keep track of how the
     tree is changing over time.  We already gather a several statistics, it
-    just neccesary to add the script-fu to gnuplotize it.
+    just necessary to add the script-fu to gnuplotize it.
 
 <li>Regression tests - We should run the regression tests in addition to the
     program tests...
 </ol><p>
 
 
 <li>Regression tests - We should run the regression tests in addition to the
     program tests...
 </ol><p>
 
+
 <!-- ======================================================================= -->
 </ul><table width="50%" bgcolor="#441188" border=0 cellpadding=4 cellspacing=0>
 <tr><td>&nbsp;</td><td width=100%>&nbsp; 
 <!-- ======================================================================= -->
 </ul><table width="50%" bgcolor="#441188" border=0 cellpadding=4 cellspacing=0>
 <tr><td>&nbsp;</td><td width=100%>&nbsp; 
@@ -111,7 +112,11 @@ If it doesn't compile, try to figure out why or report it to the <a
 href="http://mail.cs.uiuc.edu/pipermail/llvmbugs/">llvm-bugs</a> list.  If you
 get the program to compile, it would be extremely useful to convert the build
 system to be compatible with the LLVM Programs testsuite so that we can check it
 href="http://mail.cs.uiuc.edu/pipermail/llvmbugs/">llvm-bugs</a> list.  If you
 get the program to compile, it would be extremely useful to convert the build
 system to be compatible with the LLVM Programs testsuite so that we can check it
-into CVS and the automated tester can use it to track progress of the compiler.
+into CVS and the automated tester can use it to track progress of the
+compiler.<p>
+
+When testing a code, try running it with a variety of optimizations, and with
+all the back-ends: CBE, llc, and lli.<p>
 
 
 <!-- ======================================================================= -->
 
 
 <!-- ======================================================================= -->
@@ -122,12 +127,8 @@ into CVS and the automated tester can use it to track progress of the compiler.
 </b></font></td></tr></table><ul>
 
 <ol>
 </b></font></td></tr></table><ul>
 
 <ol>
-<li>Transform <tt>setjmp</tt> and <tt>longjmp</tt> calls to use the LLVM
-    <tt>invoke</tt> mechanism.
-<li>Add support for a volatile attribute on loads and stores
-<li>Support for variable argument functions
 <li>Add a new conditional move instruction: <tt>X = select bool Cond, Y, Z</tt>
 <li>Add a new conditional move instruction: <tt>X = select bool Cond, Y, Z</tt>
-<li>Add support for platform independant prefetch support.  The GCC <a
+<li>Add support for platform independent prefetch support.  The GCC <a
     href="http://gcc.gnu.org/projects/prefetch.html">prefetch project</a> page
     has a good survey of the prefetching capabilities of a variety of modern
     processors.
     href="http://gcc.gnu.org/projects/prefetch.html">prefetch project</a> page
     has a good survey of the prefetching capabilities of a variety of modern
     processors.
@@ -142,11 +143,15 @@ into CVS and the automated tester can use it to track progress of the compiler.
 </b></font></td></tr></table><ul>
 
 <ol>
 </b></font></td></tr></table><ul>
 
 <ol>
-<li>Improve the efficiency of the bytecode loader/writer, allow streaming lazy
-    loading of functions from the bytecode (for use by the JIT, for example)<br>
-<li>Rework the PassManager
-<li>Do not encode zero intializers for large arrays into the bytecode
-
+<li>Someone needs to look into getting the <tt>ranlib</tt> tool to index LLVM
+    bytecode files, so that linking in .a files is not hideously slow.  They
+    would also then have to implement the reader for this index in
+    <tt>gccld</tt>.<br>
+
+<li>Improve the efficiency of the bytecode loader/writer<br>
+<li>Extend the FunctionPassManager to use a ModuleProvider to stream functions
+    in on demand.  This would improve the efficiency of the JIT.
+<li>Rework the PassManager to be more flexible
 <li>Some transformations and analyses only work on reducible flow graphs.  It
 would be nice to have a transformation which could be "required" by these passes
 which makes irreducible graphs reducible.  This can easily be accomplished
 <li>Some transformations and analyses only work on reducible flow graphs.  It
 would be nice to have a transformation which could be "required" by these passes
 which makes irreducible graphs reducible.  This can easily be accomplished
@@ -176,15 +181,15 @@ very rewarding.<p>
 <a name="pointeranalysis">Pointer and Alias Analysis
 </b></font></td></tr></table><ul>
 
 <a name="pointeranalysis">Pointer and Alias Analysis
 </b></font></td></tr></table><ul>
 
-We have a strong base for development of both pointer analysis based
-optimizations as well as pointer analyses themselves.  It seems natural to want
-to take advantage of this...<p>
+We have a <a href="AliasAnalysis.html">strong base for development</a> of both
+pointer analysis based optimizations as well as pointer analyses themselves.  It
+seems natural to want to take advantage of this...<p>
 
 <ol>
 <li>Implement a flow-sensitive context-sensitive alias analysis algorithm<br>
   - Pick one of the somewhat efficient algorithms, but strive for maximum
     precision
 
 <ol>
 <li>Implement a flow-sensitive context-sensitive alias analysis algorithm<br>
   - Pick one of the somewhat efficient algorithms, but strive for maximum
     precision
-<li>Implement a flow-sensitive context-insensitive alias anlaysis algorithm<br>
+<li>Implement a flow-sensitive context-insensitive alias analysis algorithm<br>
   - Just an efficient local algorithm perhaps?
 
 <li>Implement an interface to update analyses in response to common code motion
   - Just an efficient local algorithm perhaps?
 
 <li>Implement an interface to update analyses in response to common code motion
@@ -192,17 +197,6 @@ to take advantage of this...<p>
 <li>Implement alias analysis based optimizations:
   <ul>
   <li>Dead store elimination
 <li>Implement alias analysis based optimizations:
   <ul>
   <li>Dead store elimination
-  <li>Location invariant Code Motion (LcICM)
-  <li>Store+Reload or "store forwarding" elimination:<p>
-      Change:
-       <pre>
-        store int X, int* P
-        Y = load int* P</pre>
-      into:
-       <pre>
-        store int X, int *P
-        Y = X</pre>
-  <li>Register promotion (move loads and stores out of loop bodies, for example)
   </ul>
 </ol>
 
   </ul>
 </ol>
 
@@ -244,8 +238,8 @@ Ideas for profile guided transformations:<p>
      - A linear time or nearly so algorithm
 <li>Implement a strength reduction pass
 <li>Value range propagation pass
      - A linear time or nearly so algorithm
 <li>Implement a strength reduction pass
 <li>Value range propagation pass
-<li>Implement a tail recursion elimination pass
 <li>Implement an unswitching pass
 <li>Implement an unswitching pass
+<li>Write a loop unroller, with a simple heuristic for when to unroll
 </ol>
 
 <!-- ======================================================================= -->
 </ol>
 
 <!-- ======================================================================= -->
@@ -258,7 +252,8 @@ Ideas for profile guided transformations:<p>
 <ol>
 <li>Implement a global register allocator
 <li>Implement a better instruction selector
 <ol>
 <li>Implement a global register allocator
 <li>Implement a better instruction selector
-<li>Implement a static compiler in addition to the JIT (easy project)
+<li>Implement support for the "switch" instruction without requiring the 
+    lower-switches pass.
 </ol>
 
 <!-- ======================================================================= -->
 </ol>
 
 <!-- ======================================================================= -->
@@ -282,6 +277,6 @@ Ideas for profile guided transformations:<p>
 <address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
 <!-- Created: Tue Aug  6 15:00:33 CDT 2002 -->
 <!-- hhmts start -->
 <address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
 <!-- Created: Tue Aug  6 15:00:33 CDT 2002 -->
 <!-- hhmts start -->
-Last modified: Thu Feb  6 13:38:41 CST 2003
+Last modified: Wed Oct  1 16:48:54 CDT 2003
 <!-- hhmts end -->
 </font></body></html>
 <!-- hhmts end -->
 </font></body></html>