diff options
| author | Max Kazantsev <max.kazantsev@azul.com> | 2018-10-16 05:26:21 +0000 |
|---|---|---|
| committer | Max Kazantsev <max.kazantsev@azul.com> | 2018-10-16 05:26:21 +0000 |
| commit | fdfd98ceecd17bf5d72bf4ed1a86948ad590c647 (patch) | |
| tree | 8e88096b377fd5a68e74f79da76d440d16e76f6f /llvm/lib/CodeGen/GlobalISel/GlobalISel.cpp | |
| parent | 28d467a809de1ac1e720d52c9296176cbe822a86 (diff) | |
| download | bcm5719-llvm-fdfd98ceecd17bf5d72bf4ed1a86948ad590c647.tar.gz bcm5719-llvm-fdfd98ceecd17bf5d72bf4ed1a86948ad590c647.zip | |
[SCEV] Limit AddRec "simplifications" to avoid combinatorial explosions
SCEV's transform that turns `{A1,+,A2,+,...,+,An}<L> * {B1,+,B2,+,...,+,Bn}<L>` into
a single AddRec of size `2n+1` with complex combinatorial coefficients can easily
trigger exponential growth of the SCEV (in case if nothing gets folded and simplified).
We tried to restrain this transform using the option `scalar-evolution-max-add-rec-size`,
but its default value seems to be insufficiently small: the test attached to this patch
with default value of this option `16` has a SCEV of >3M symbols (when printed out).
This patch reduces the simplification limit. It is not a cure to combinatorial
explosions, but at least it reduces this corner case to something more or less
reasonable.
Differential Revision: https://reviews.llvm.org/D53282
Reviewed By: sanjoy
llvm-svn: 344584
Diffstat (limited to 'llvm/lib/CodeGen/GlobalISel/GlobalISel.cpp')
0 files changed, 0 insertions, 0 deletions

