Remove HAVE_BZLIB and HAVE_BZIP2. We always have bzip2 now.
[oota-llvm.git] / docs / OpenProjects.html
index cc0f133d9a2c3fd0a3dc9bdc8c8b0de02c3067f7..2acb7279c21357f297fa343edde5cfed8c4f3a24 100644 (file)
@@ -19,6 +19,7 @@
     <li><a href="#glibc">Port glibc to LLVM</a></li>
     <li><a href="#programs">Compile programs with the LLVM Compiler</a></li>
     <li><a href="#llvm_ir">Extend the LLVM intermediate representation</a></li>
+    <li><a href="#target">Target backend improvements</a></li>
     <li><a href="#misc_imp">Miscellaneous Improvements</a></li>
   </ol></li>
 
@@ -26,7 +27,7 @@
   <ol>
     <li><a href="#newfeaturebugs">Implementing new feature PRs</a></li>
     <li><a href="#pointeranalysis">Pointer and Alias Analysis</a></li>
-    <li><a href="#profileguided">Profile Guided Optimization</a></li>
+    <li><a href="#profileguided">Profile-Guided Optimization</a></li>
     <li><a href="#xforms">New Transformations and Analyses</a></li>
     <li><a href="#x86be">X86 Back-end Improvements</a></li>
     <li><a href="#misc_new">Miscellaneous Additions</a></li>
@@ -90,7 +91,8 @@ can use improvement...</p>
 
 <p>
 The <a href="http://llvm.cs.uiuc.edu/bugs/">LLVM bug tracker</a> occasionally
-has <a href="http://llvm.cs.uiuc.edu/bugs/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=code-cleanup&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Bug+Number&field0-0-0=noop&type0-0-0=noop&value0-0-0=">"code-cleanup" bugs</a> filed in it.  Taking one of these and fixing it is a good
+has <a
+  href="http://llvm.cs.uiuc.edu/bugs/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=code-cleanup&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Bug+Number&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">"code-cleanup" bugs</a> filed in it.  Taking one of these and fixing it is a good
 way to get your feet wet in the LLVM code and discover how some of its components
 work.
 </p>
@@ -152,6 +154,27 @@ all the back-ends: CBE, llc, and lli.</p>
 
 </div>
 
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+  <a name="target">Target backend improvements</a>
+</div>
+
+<div class="doc_text">
+
+<ol>
+  <li>Find benchmarks either using our <a
+  href="http://llvm.cs.uiuc.edu/testresults/">test results</a> or on your own,
+  where LLVM code generators do not produce optimal code or simply where another
+  compiler produces better code.  Try to minimize the test case that
+  demonstrates the issue.  Then, either <a
+  href="http://llvm.cs.uiuc.edu/bugs/">submit a bug</a> with your testcase and
+  the code that LLVM produces vs. the code that it <em>should</em> produce, or
+  even better, see if you can improve the code generator and submit a
+  patch.</li>
+</ol>
+
+</div>
+
 <!-- ======================================================================= -->
 <div class="doc_subsection">
   <a name="misc_imp">Miscellaneous Improvements</a>
@@ -202,7 +225,8 @@ also be very rewarding.</p>
 
 <div class="doc_text">
 
-<p>Many ideas for feature requests are stored in LLVM bugzilla.  Just <a href="http://llvm.org/bugs/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=new-feature&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&namedcmd=All+PRs&newqueryname=&order=Bug+Number&field0-0-0=noop&type0-0-0=noop&value0-0-0=">search for bugs with a "new-feature" keyword</a>.</p>
+<p>Many ideas for feature requests are stored in LLVM bugzilla.  Just <a
+  href="http://llvm.cs.uiuc.edu/bugs/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=new-feature&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;namedcmd=All+PRs&amp;newqueryname=&amp;order=Bug+Number&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">search for bugs with a "new-feature" keyword</a>.</p>
 
 </div>
 
@@ -227,7 +251,6 @@ themselves.  It seems natural to want to take advantage of this...</p>
 
 <li>Implement alias-analysis-based optimizations:
   <ul>
-  <li>Dead store elimination</li>
   <li>...</li>
   </ul></li>
 </ol>
@@ -236,7 +259,7 @@ themselves.  It seems natural to want to take advantage of this...</p>
 
 <!-- ======================================================================= -->
 <div class="doc_subsection">
-  <a name="profileguided">Profile Guided Optimization</a>
+  <a name="profileguided">Profile-Guided Optimization</a>
 </div>
 
 <div class="doc_text">
@@ -247,7 +270,7 @@ but we don't have many transformations.  We would welcome new profile-guided
 transformations as well as improvements to the current profiling system.
 </p>
 
-<p>Ideas for profile guided transformations:</p>
+<p>Ideas for profile-guided transformations:</p>
 
 <ol>
 <li>Superblock formation (with many optimizations)</li>
@@ -284,6 +307,8 @@ profiling code to work with the generic profiling interfaces.</li>
 <div class="doc_text">
 
 <ol>
+<li>Implement <a href="http://www.cs.purdue.edu/homes/vandrutj/">GVN-PRE</a>, a 
+  powerful and simple Partial Redundancy Elimination algorithm for SSA form</li>
 <li>Implement a Dependence Analysis Infrastructure<br>
      - Design some way to represent and query dep analysis</li>
 <li>Implement a strength reduction pass</li>
@@ -338,6 +363,20 @@ run it through llvm-gcc, then run a random set of passes on it using opt.
 Try to crash opt. When opt crashes, use bugpoint to reduce the test case and
 mail the result to yourself.  Repeat ad infinitum.</li>
 <li>Design a simple, recognizable logo.</li>
+<li>Improve the usefulness and utility of the Skeleton target backend:
+<ul>
+  <li>Convert the non-functional Skeleton target to become an abstract machine
+  target (choose some simple instructions, a register set, etc).  This will
+  become a much more useful example of a backend since it would be a simple
+  but <em>functional</em> backend.  Examples of such architectures include MIX,
+  MMIX, <a
+  href="http://www.cs.cinvestav.mx/SC/prof_personal/adiaz/vhdl/DLX/">DLX</a>,
+  or come up with your own!</li>
+  <li>Use the new Skeleton backend in the Interpreter: compile LLVM to Skeleton
+  target, and then interpret that code instead of LLVM.  Performance win would
+  be the primary goal, as the number of registers would be a small constant
+  instead of unbounded, for example.</li>
+</ul></li>
 </ol>
 
 </div>