summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands
diff options
context:
space:
mode:
authorMax Kazantsev <max.kazantsev@azul.com>2017-07-23 15:40:19 +0000
committerMax Kazantsev <max.kazantsev@azul.com>2017-07-23 15:40:19 +0000
commit0e9e0796f47d09d00576be0b5d6c8f0d5fcdfe5c (patch)
tree53e6e37ae91f0cc8192e286f95318c133f02b9da /lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands
parent4c29ca4b9ba9e66451d10ca8dc125d8d6c7683b9 (diff)
downloadbcm5719-llvm-0e9e0796f47d09d00576be0b5d6c8f0d5fcdfe5c.tar.gz
bcm5719-llvm-0e9e0796f47d09d00576be0b5d6c8f0d5fcdfe5c.zip
[SCEV] Limit max size of AddRecExpr during evolving
When SCEV calculates product of two SCEVAddRecs from the same loop, it tries to combine them into one big AddRecExpr. If the sizes of the initial SCEVs were `S1` and `S2`, the size of their product is `S1 + S2 - 1`, and every operand of the resulting SCEV is combined from operands of initial SCEV and has much higher complexity than they have. As result, if we try to calculate something like: %x1 = {a,+,b} %x2 = mul i32 %x1, %x1 %x3 = mul i32 %x2, %x1 %x4 = mul i32 %x3, %x2 ... The size of such SCEVs grows as `2^N`, and the arguments become more and more complex as we go forth. This leads to long compilation and huge memory consumption. This patch sets a limit after which we don't try to combine two `SCEVAddRecExpr`s into one. By default, max allowed size of the resulting AddRecExpr is set to 16. Differential Revision: https://reviews.llvm.org/D35664 llvm-svn: 308847
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/cpp/breakpoint-commands')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud