[PATCH] D90648: [SCEV] Fix nsw flags for GEP expressions
Max Kazantsev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 8 20:06:04 PST 2020
mkazantsev accepted this revision.
mkazantsev added a comment.
This revision is now accepted and ready to land.
Looks good, thanks!
================
Comment at: llvm/lib/Analysis/ScalarEvolution.cpp:3488
+ SCEV::NoWrapFlags BaseWrap = GEP->isInBounds() && isKnownNonNegative(Offset)
+ ? SCEV::FlagNUW : SCEV::FlagAnyWrap;
+ return getAddExpr(BaseExpr, Offset, BaseWrap);
----------------
nikic wrote:
> mkazantsev wrote:
> > Isn't inbounds gep always `nuw`? Do we really need the non-negative check?
> As the offset is interpreted as a signed number, no. For a negative offset, `sub %base, -1 * %offset` would be nuw, but we don't have a way to express that.
Ah, got it. It's nasty. Thanks for explaining!
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90648/new/
https://reviews.llvm.org/D90648
More information about the llvm-commits
mailing list