llvm-project/llvm/lib/Transforms
Chris Lattner 1db9bbe802 Implement PRE of loads in the GVN pass with a pretty cheap and
straight-forward implementation.  This does not require any extra
alias analysis queries beyond what we already do for non-local loads.

Some programs really really like load PRE.  For example, SPASS triggers
this ~1000 times, ~300 times in 255.vortex, and ~1500 times on 403.gcc.

The biggest limitation to the implementation is that it does not split
critical edges.  This is a huge killer on many programs and should be
addressed after the initial patch is enabled by default.

The implementation of this should incidentally speed up rejection of 
non-local loads because it avoids creating the repl densemap in cases 
when it won't be used for fully redundant loads.

This is currently disabled by default.
Before I turn this on, I need to fix a couple of miscompilations in
the testsuite, look at compile time performance numbers, and look at
perf impact.  This is pretty close to ready though.

llvm-svn: 60408
2008-12-02 08:16:11 +00:00
..
Hello Initial support for the CMake build system. 2008-09-22 01:08:49 +00:00
IPO Fix error where it wasn't getting the correct caller function. 2008-11-21 00:09:21 +00:00
Instrumentation Use Function::getEntryBlock() instead of Function::front(), for clarity. 2008-10-21 03:10:28 +00:00
Scalar Implement PRE of loads in the GVN pass with a pretty cheap and 2008-12-02 08:16:11 +00:00
Utils rewrite RecursivelyDeleteTriviallyDeadInstructions to use a more efficient 2008-11-28 01:20:46 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00