[llvm-commits] CVS: llvm-www/OpenProjects.html

Chris Lattner sabre at nondot.org
Sat Mar 1 12:16:22 PST 2008



Changes in directory llvm-www:

OpenProjects.html updated: 1.36 -> 1.37
---
Log message:

replace the aliasing section


---
Diffs of the changes:  (+56 -9)

 OpenProjects.html |   65 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 56 insertions(+), 9 deletions(-)


Index: llvm-www/OpenProjects.html
diff -u llvm-www/OpenProjects.html:1.36 llvm-www/OpenProjects.html:1.37
--- llvm-www/OpenProjects.html:1.36	Sat Mar  1 14:09:26 2008
+++ llvm-www/OpenProjects.html	Sat Mar  1 14:16:03 2008
@@ -244,17 +244,64 @@
 
 <p>We have a <a href="docs/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>
+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</li>
+<li>An easy project is to <a href="http://llvm.org/PR2055">add the 
+'nocapture' attribute</a> to the LLVM IR and have passes infer and 
+propagate it around.  Its presence can significantly improve local 
+alias analysis (by making more variables "not escape") at very 
+low cost.</li>
+
+<li>The globals mod/ref pass basically does really simple and cheap  
+bottom-up context sensitive alias analysis.  It being simple and cheap  
+are really important, but there are simple things that we could do to  
+better capture the effects of functions that access pointer  
+arguments.  This can be really important for C++ methods, which spend  
+lots of time accessing pointers off 'this'.</li>
+
+<li>Implement support for representing language-specific Type Based Alias 
+Analysis information in the LLVM IR.</li>
+
+<li>The alias analysis API supports the getModRefBehavior method, which  
+allows the implementation to give details analysis of the functions.   
+For example, we could implement <a href="http://llvm.org/PR1604">full knowledge 
+of printf/scanf</a> side effects, which would be useful.  This feature is in
+place but not being used for anything right now.</li>
+<li>We need some way to reason about errno.  Consider a loop like this:
+
+<pre>
+    for ()
+      x += sqrt(loopinvariant);
+</pre>
+
+<p>We'd like to transform this into:</p>
+
+<pre>
+    t = sqrt(loopinvariant);
+    for ()
+      x += t;
+</pre>
+
+<p>This transformation is safe, because the value of errno isn't  
+otherwise changed in the loop and the exit value of errno from the  
+loop is the same.  We currently can't do this, because sqrt clobbers  
+errno, so it isn't "readonly" or "readnone" and we don't have a good  
+way to model this.</p>
+
+<p>The hard part of this project is figuring out how to describe errno  
+in the optimizer: each libc #defines errno to something different it  
+seems.  Maybe the solution is to have a __builtin_errno_addr() or  
+something and change sys headers to use it.</p>
+
+<li>There are lots of ways to optimize out and <a 
+href="http://llvm.org/PR452">improve handling of 
+memcpy/memset</a>.</li>
+
+<li>We need a LoopPass that replaces loops with scalar stores in them  
+into memset/memcpy calls. This dramatically speeds up programs like  
+'viterbi' in the testsuite, as well as some SPEC benchmarks.</li>
 
-<li>Implement a flow-sensitive context-insensitive alias analysis algorithm<br>
-  - Just an efficient local algorithm perhaps?</li>
-
-<li>Implement new alias-analysis-based optimizations.</li>
 </ol>
 
 </div>
@@ -427,7 +474,7 @@
   src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
 
   <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2008/03/01 20:09:26 $
+  Last modified: $Date: 2008/03/01 20:16:03 $
 </address>
 
 <!--#include virtual="footer.incl" -->






More information about the llvm-commits mailing list