diff options
author | Eli Friedman <efriedma@codeaurora.org> | 2018-06-27 20:35:02 +0000 |
---|---|---|
committer | Eli Friedman <efriedma@codeaurora.org> | 2018-06-27 20:35:02 +0000 |
commit | 199caa2e8090c5696a65a5b6bccf5d26ec50eb17 (patch) | |
tree | 49dff112ae69b6255a164f2b210656cf99c23f96 /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | 8a62ef0e1dc6659b2a0c831e2aedec3c86e81802 (diff) | |
download | bcm5719-llvm-199caa2e8090c5696a65a5b6bccf5d26ec50eb17.tar.gz bcm5719-llvm-199caa2e8090c5696a65a5b6bccf5d26ec50eb17.zip |
[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
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
0 files changed, 0 insertions, 0 deletions