[PATCH] D96168: [AssumptionCache] Avoid dangling llvm.assume calls in the cache
Johannes Doerfert via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 9 19:10:58 PST 2021
jdoerfert added inline comments.
================
Comment at: llvm/include/llvm/Analysis/AssumptionCache.h:81
+ /// Set of value handles for calls of the \@llvm.assume intrinsic.
+ using AssumeHandleSet = DenseSet<AssumeHandle, DenseMapInfo<Value *>>;
+ AssumeHandleSet AssumeHandles;
----------------
Meinersbur wrote:
> Changing this list to a DenseSet introduces indeterminism in Polly's test case `ScopInfo/user_provided_assumptions.ll` and even in `basic.ll` that is changed in this patch. ScalarEvolution is known to give different result depending on the order in which elements are processed. `PredicateInfo` might emit different IR depending on the order as well.
>
> I think we should play it save and changed it back to a `SmallVector`. Unfortunately, a SetVector instead would be of no use since the removing an element still searches the element in the vector.
>
I'm not sure I follow. If the user would benefit from more assumptions that are now "later" in the traversal, they should scan on. `basic.ll` is a print method which can be non-determistic, IMHO. Long story short, I'd say SCEV or Polly should find the best information among all assumptions.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96168/new/
https://reviews.llvm.org/D96168
More information about the llvm-commits
mailing list