hanchenye-llvm-project/polly
Tobias Grosser 64b95123ef Delete trivial PHI nodes (aka stack slot sharing)
During code preperation trivial PHI nodes (mainly introduced by lcssa) are
deleted to decrease the number of introduced allocas (==> dependences). However
simply replacing them by their only incoming value would cause the independent
block pass to introduce new allocas. To prevent this we try to share stack slots
during code preperarion, hence to reuse a already created alloca 'to demote' the
trivial PHI node. This works if we know that the value stored in this alloca
will be the incoming value of the trivial PHI at the end of the predecessor
block of this trivial PHI.

Contributed-by: Johannes Doerfert <doerfert@cs.uni-saarland.de>
llvm-svn: 205320
2014-04-01 16:01:33 +00:00
..
autoconf GMP is only required for CLooG 2014-02-22 02:15:39 +00:00
cmake record in POLLY_LINK_LIBS all the libs needed for polly 2014-03-13 20:24:48 +00:00
docs
include clang-format: Remove empty lines 2014-03-21 14:04:25 +00:00
lib Delete trivial PHI nodes (aka stack slot sharing) 2014-04-01 16:01:33 +00:00
test Delete trivial PHI nodes (aka stack slot sharing) 2014-04-01 16:01:33 +00:00
tools Update the copyright credits -- Happy new year 2014! 2014-01-01 08:27:31 +00:00
utils Update CLooG and some test cases 2014-03-10 17:31:22 +00:00
www www: More formatting improvements 2014-03-21 13:38:02 +00:00
.gitattributes
CMakeLists.txt record in POLLY_LINK_LIBS all the libs needed for polly 2014-03-13 20:24:48 +00:00
CREDITS.txt
LICENSE.txt Update the copyright credits -- Happy new year 2014! 2014-01-01 08:27:31 +00:00
Makefile
Makefile.common.in
Makefile.config.in autoconf: Add PLUTO_FOUND flag 2014-03-18 18:50:58 +00:00
README
configure GMP is only required for CLooG 2014-02-22 02:15:39 +00:00

README

Polly - Polyhedral optimizations for LLVM
-----------------------------------------
http://polly.llvm.org/

Polly uses a mathematical representation, the polyhedral model, to represent and
transform loops and other control flow structures. Using an abstract
representation it is possible to reason about transformations in a more general
way and to use highly optimized linear programming libraries to figure out the
optimal loop structure. These transformations can be used to do constant
propagation through arrays, remove dead loop iterations, optimize loops for
cache locality, optimize arrays, apply advanced automatic parallelization, drive
vectorization, or they can be used to do software pipelining.