forked from OSchip/llvm-project
f54bb7743a
In case we have modulo operations in the access function (supported since r240518), the assumptions generated to ensure array accesses remain within bounds can contain existentially quantified dimensions which results in more complex and more difficult to handle integer sets. As a result LNT's linpack benchmark started to fail due to excessive compile time. We now just drop the existentially quantified dimensions. This should be generally save, but may result in less precise assumptions which may consequently make us fall back to the original (unoptimized) code more often. In practice, these cases probably do not appear to often. I had difficulties to extract a good test case, but fortunately our LNT bots cover this one well. llvm-svn: 240775 |
||
---|---|---|
.. | ||
autoconf | ||
cmake | ||
include | ||
lib | ||
test | ||
tools | ||
utils | ||
www | ||
.arcconfig | ||
.arclint | ||
.gitattributes | ||
.gitignore | ||
CMakeLists.txt | ||
CREDITS.txt | ||
LICENSE.txt | ||
Makefile | ||
Makefile.common.in | ||
Makefile.config.in | ||
README | ||
configure |
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.