llvm-project/polly
Michael Kruse 49a59ca093 [ScopInfo] Fix domains after loops.
ISL can conclude additional conditions on parameters from restrictions
on loop variables. Such conditions persist when leaving the loop and the
loop variable is projected out. This results in a narrower domain for
exiting the loop than entering it and is logically impossible for
non-infinite loops.

We fix this by not adding a lower bound i>=0 when constructing BB
domains, but defer it to when also the upper bound it computed, which
was done redundantly even before this patch.

This reduces the number of LNT fails with -polly-process-unprofitable
-polly-position=before-vectorizer from 8 to 6.

llvm-svn: 264118
2016-03-22 23:27:42 +00:00
..
cmake
docs doxygen: Also show private members 2016-03-07 21:38:19 +00:00
include/polly Invalidate scop on encountering a complex control flow 2016-03-22 22:05:32 +00:00
lib [ScopInfo] Fix domains after loops. 2016-03-22 23:27:42 +00:00
test [ScopInfo] Fix domains after loops. 2016-03-22 23:27:42 +00:00
tools Also clang-format *.c run-time library files 2016-03-08 07:34:58 +00:00
utils
www www: Add links to sphinx/doxygen documentation 2016-03-03 07:03:21 +00:00
.arcconfig
.arclint
.gitattributes
.gitignore
CMakeLists.txt Also clang-format *.c run-time library files 2016-03-08 07:34:58 +00:00
CREDITS.txt
LICENSE.txt
README

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.