[PATCH] D149529: [SCEV][reland] More precise trip multiples
Joshua Cao via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed May 31 21:04:07 PDT 2023
caojoshua marked an inline comment as done.
caojoshua added inline comments.
================
Comment at: llvm/lib/Analysis/ScalarEvolution.cpp:14326
+ (Multiple == 0 || RecomputedMultiple == 0)) &&
+ RecomputedMultiple.urem(Multiple) != 0) {
+ dbgs() << "Incorrect cached computation in ConstantMultipleCache for "
----------------
caojoshua wrote:
> caojoshua wrote:
> > uabelho wrote:
> > > It's this urem call that crashes in the comment I made yesterday.
> > >
> > > Multiple is 0 and doing urem with RHS being 0 hits the assertion since dividing by 0 isn't good.
> > >
> > > Are we perhaps missing a negation of the condition
> > > ```
> > > (Multiple == 0 || RecomputedMultiple == 0)
> > > ```
> > > ?
> > > Now we do the urem(Multiple) specifically if Multiple is 0, which we should avoid.
> > Its due to returning a zero from [too many trailing zeros](https://github.com/llvm/llvm-project/blob/b7e5cb1f9a3a5226f22bb81c865214be81dce940/llvm/lib/Analysis/ScalarEvolution.cpp#L6233). I am going to rewrite this a bit, it should be verifying on `getNonZeroConstantMultiple()`.
> >
> > I am going to run this through expensive checks.
> Correction: I looked at things wrong. The current verification requires that recomputed multiples are stronger than previous multiples, but that is not the case here. It turns out a multiple can become weaker if due to dependence on ComputeKnownBits(). As the IR transforms, its possible that ComputeKnownBits() becomes weaker due to limitations in depth.
>
> I have local changes that relaxes the verification and passes the provided test case. Testing with expensive checks takes a long time on my machine and I won't be able to push today.
Issue fixed by https://github.com/llvm/llvm-project/commit/ff471dcf7669b1ad7903a44d0773bef4eb175eb9
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D149529/new/
https://reviews.llvm.org/D149529
More information about the llvm-commits
mailing list