[ForwardOpTree] Limit isl operations of known content reload.
authorMichael Kruse <llvm@meinersbur.de>
Mon, 6 Nov 2017 17:48:14 +0000 (17:48 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Mon, 6 Nov 2017 17:48:14 +0000 (17:48 +0000)
Put the analysis part of reloadKnownContent under an isl
max-operations quota scope, as has already been done for
forwardKnownLoad.

This should fix the aosp timeout of "GrTestUtils.cpp".

llvm-svn: 317495

polly/lib/Transform/ForwardOpTree.cpp

index 65655d5..d31940d 100644 (file)
@@ -576,7 +576,8 @@ public:
                                         Loop *DefLoop, isl::map DefToTarget,
                                         bool DoIt) {
     // Cannot do anything without successful known analysis.
-    if (Known.is_null())
+    if (Known.is_null() || Translator.is_null() || UseToTarget.is_null() ||
+        DefToTarget.is_null() || MaxOpGuard.hasQuotaExceeded())
       return FD_NotApplicable;
 
     MemoryAccess *Access = TargetStmt->lookupInputAccessOf(Inst);
@@ -586,6 +587,12 @@ public:
       return FD_CanForwardLeaf;
     }
 
+    // Don't spend too much time analyzing whether it can be reloaded. When
+    // carrying-out the forwarding, we cannot bail-out in the middle of the
+    // transformation. It also shouldn't take as long because some results are
+    // cached.
+    IslQuotaScope QuotaScope = MaxOpGuard.enter(!DoIt);
+
     // { DomainDef[] -> ValInst[] }
     isl::union_map ExpectedVal = makeNormalizedValInst(Inst, UseStmt, UseLoop);