llvm-project/polly/lib
Eli Friedman 199caa2e80 [ScopHelper] Cache ScopExpander results.
The number of SCEV expressions is usually linear in the number of IR
instructions being modeled.  However, a naive SCEV visitor is not. For
an expression like x*x, "x" will be visited twice.  If x is itself an
expression like x*x, that will be visited twice, etc, and the overall
runtime is O(2^N) in the number of SCEV expressions.

To prevent this from happening, add a cache, so we only visit each SCEV
expression once.

Not sure this is the best solution. Maybe we can instead check whether
the SCEV is scop-invariant (in which case we never need to map the
value). But we don't have a utility for that at the moment.

Differential Revision: https://reviews.llvm.org/D47087

llvm-svn: 335783
2018-06-27 20:35:02 +00:00
..
Analysis Move ScopInfo to isl++ 2018-06-19 08:13:53 +00:00
CodeGen Simplify the implementation of getCUDALibDeviceFunction. NFC. 2018-06-14 08:54:55 +00:00
Exchange [CodeGen] Allow undefined loads in statement instances outside context. 2018-04-10 01:20:51 +00:00
External Update isl to isl-0.19-185-g8e9f55ce 2018-06-11 14:25:42 +00:00
Support [ScopHelper] Cache ScopExpander results. 2018-06-27 20:35:02 +00:00
Transform [ZoneAlgo] Use getDefToTarget in makeValInst. NFC. 2018-06-26 14:29:09 +00:00
CMakeLists.txt [CMake] Use only keyword-version of target_link_library. NFC. 2018-01-12 16:09:18 +00:00
Polly.cpp Drop '@brief' from doxygen comments 2016-09-02 06:33:33 +00:00