forked from OSchip/llvm-project
471a5e3388
It is common practice to keep constructors lightweight. The reasons include: - The vtable during the constructor's execution is set to the static type of the object, not to the vtable of the derived class. That is, method calls behave differently in constructors and ordinary methods. This way it is possible to call unimplemented methods of abstract classes, which usually results in a segmentation fault. - If an exception is thrown in the constructor, the destructor is not called, potentially leaking memory. - Code in constructors cannot be called in a regular way, e.g. from non-constructor methods of derived classes. - Because it is common practice, people may not expect the constructor to do more than initializing data and skip them when looking for bugs. Not all of these are applicable to LLVM (e.g. exceptions are disabled). This patch refactors out the computational work in the constructors of Scop and IslAst into regular init functions and introduces static create-functions as replacement. Differential revision: http://reviews.llvm.org/D11491 Reviewers: grosser, jdoerfert llvm-svn: 243677 |
||
---|---|---|
.. | ||
autoconf | ||
cmake | ||
include/polly | ||
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.