[ForwardOpTree] Allow out-of-quota in examination part of forwardTree.
commitd3324b3f7f7241f8d46b12a2a91d5119d2315e39
authorMichael Kruse <llvm@meinersbur.de>
Tue, 19 Sep 2017 22:53:20 +0000 (19 22:53 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Tue, 19 Sep 2017 22:53:20 +0000 (19 22:53 +0000)
treed0f3199ab6b70f558d26ebf57f6d328288eb1326
parent8932e2738a65007dd73e7983585b8bf90ef62f7e
[ForwardOpTree] Allow out-of-quota in examination part of forwardTree.

Computing the reaching definition in forwardTree() can take a long time
if the coefficients are large. When the forwarding is
carried-out (doIt==true), forwardTree() must execute entirely or not at
all to get a consistent output, which means we cannot just allow
out-of-quota errors to happen in the middle of the processing.

We introduce the class IslQuotaScope which allows to opt-in code that is
conformant and has been tested with out-of-quota events. In case of
ForwardOpTree, out-of-quota is allowed during the operand tree
examination, but not during the transformation. The same forwardTree()
recursion is used for examination and execution, meaning that the
reaching definition has already been computed in the examination tree
walk and cached for reuse in the transformation tree walk.

This should fix the time-out of grtestutils.ll of the asop buildbot. If
the compilation still takes too long, we can reduce the max-operations
allows for -polly-optree.

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

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@313690 91177308-0d34-0410-b5e6-96231b3b80d8
include/polly/Support/GICHelper.h
lib/Transform/ForwardOpTree.cpp