llvm-project/polly
Tobias Grosser 6213913244 Use the branch instruction to define the location of a PHI-node write
We use the branch instruction as the location at which a PHI-node write takes
place, instead of the PHI-node itself. This allows us to identify the
basic-block in a region statement which is on the incoming edge of the PHI-node
and for which the write access was originally introduced. As a result we can,
during code generation, avoid generating PHI-node write accesses for basic
blocks that do not preceed the PHI node without having to look at the IR
again.

This change fixes a bug which was introduced in r243420, when we started to
explicitly model PHI-node reads and writes, but dropped some additional checks
that where still necessary during code generation to not emit PHI-node writes
for basic-blocks that are not on incoming edges of the original PHI node.
Compared to the code before r243420 the new code does not need to inspect the IR
any more and we also do not generate multiple redundant writes.

llvm-svn: 243852
2015-08-02 16:17:41 +00:00
..
autoconf Enable ISL's small integer optimization 2015-06-25 20:47:35 +00:00
cmake Unify FOLDER property of Polly targets 2015-07-21 12:40:01 +00:00
include/polly Use the branch instruction to define the location of a PHI-node write 2015-08-02 16:17:41 +00:00
lib Use the branch instruction to define the location of a PHI-node write 2015-08-02 16:17:41 +00:00
test Use the branch instruction to define the location of a PHI-node write 2015-08-02 16:17:41 +00:00
tools Do not compile GPU library with sanitizers 2015-07-28 12:51:23 +00:00
utils Rename 'scattering' to 'schedule' 2015-04-21 11:37:25 +00:00
www Mark a couple of items as completed 2015-07-14 10:52:58 +00:00
.arcconfig Added arcanist (arc) unit test support 2014-09-08 19:30:09 +00:00
.arclint Added arcanist linters and cleaned errors and warnings 2014-08-18 00:40:13 +00:00
.gitattributes gitattributes: .png and .txt are no text files 2013-07-28 09:05:20 +00:00
.gitignore Add git patch files to .gitignore 2015-06-23 20:55:01 +00:00
CMakeLists.txt Unify FOLDER property of Polly targets 2015-07-21 12:40:01 +00:00
CREDITS.txt Add myself to the credits 2014-08-10 03:37:29 +00:00
LICENSE.txt Update the copyright credits -- Happy new year 2014! 2014-01-01 08:27:31 +00:00
Makefile Revert "Fix a bug introduced by r153739: We are not able to provide the correct" 2012-04-11 07:43:13 +00:00
Makefile.common.in 'chmod -x' on files that do not need the executable bits 2012-12-29 15:09:03 +00:00
Makefile.config.in Fix autotools build 2015-06-25 16:50:13 +00:00
README Trivial change to the README, mainly to test commit access. 2012-10-09 04:59:42 +00:00
configure Enable ISL's small integer optimization 2015-06-25 20:47:35 +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.