search for: pendinglooppredicates

Displaying 4 results from an estimated 4 matches for "pendinglooppredicates".

2018 Feb 10
0
[SCEV] Inconsistent SCEV formation for zext
...roExtendExpr(%dec) again. However, this second (recursive) time, we don't simplify the zext and cache a pessimistic value for it. We don't get the more precise answer the second time because we bail out on proving the same predicate recursively to avoid infinite loops (see ScalarEvolution::PendingLoopPredicates). I don't think there is a nice and easy fix here. We can try to find some specific property of the IV we can exploit here to make this work, but the general problem will remain. -- Sanjoy On Thu, Feb 8, 2018 at 2:19 PM, Chawla, Pankaj <pankaj.chawla at intel.com> wrote: > Hi Sanjo...
2018 Feb 08
2
[SCEV] Inconsistent SCEV formation for zext
Hi Sanjoy, SCEV is behaving inconsistently when forming SCEV for this zext instruction in the attached test case- %conv5 = zext i32 %dec to i64 If we request a SCEV for the instruction, it returns- (zext i32 {{-1,+,1}<nw><%for.body>,+,-1}<nw><%for.body7> to i64) This can be seen by invoking- $ opt -analyze -scalar-evolution inconsistent-scev-zext.ll But when computing
2018 Feb 11
2
[SCEV] Inconsistent SCEV formation for zext
...ave two levels of caching for data structures for which infinite recursion is possible (like Value -> SCEV, Value->Predicate, Loop->BackedgeTakenCount etc). The first level of caching is the 'PendingCache' and the second one is the 'FinalCache'. PendingCache is similar to PendingLoopPredicates. It is used to break infinite recursion. In addition we keep a Boolean class member 'PessimisticMode' (common to all caches). The lookup logic for the cache is something like this- If (PendingCache.find(Key)) { PessimisticMode = true; return Value; } else if (FinalCache.find(Key)) {...
2018 Feb 20
0
[SCEV] Inconsistent SCEV formation for zext
...nt; } ... // We discovered zext(s) can be simplified to t UniqueSCEVs.insert({kZeroExtend, S}, t); SimplifiedSCEVs[s] = t; return t; } > The first level of caching is the 'PendingCache' and the second one is the 'FinalCache'. PendingCache is similar to PendingLoopPredicates. It is used to break infinite recursion. In addition we keep a Boolean class member 'PessimisticMode' (common to all caches). > > The lookup logic for the cache is something like this- > > If (PendingCache.find(Key)) { > PessimisticMode = true; > return Value; > } e...