[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