forked from OSchip/llvm-project
c5447f4c3b
In TempScopInfo::buildCondition we extract the conditions to guard the BB *in addition of* loop bounds. This means we should only consider the conditions in the paths (in CFG) that do not contain cycles (loops). At the same time, we set the invert flag if the FalseBB of the current branch dominates our target BB to indicate that we reach the target BB with an inverted condition from the current branch. In this case, the path from the FalseBB contains a cycle if the FalseBB is the target of a backedge. The conditions implied by such a path should not be consider. We can identify such a case by checking if the TrueBB also dominates our target BB, which means we can also reach our target BB from the TrueBB, without going through the backedge. llvm-svn: 222907 |
||
---|---|---|
.. | ||
autoconf | ||
cmake | ||
docs | ||
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.