[PATCH] D33567: [InstCombine] Pass the DominatorTree and AssumptionCache to a few calls to isKnownPositive, isKnownNegative, and isKnownNonZero
Daniel Berlin via llvm-commits
llvm-commits at lists.llvm.org
Fri May 26 10:13:15 PDT 2017
I tried to make sure we passed the right instruction in each case, but i
may have screwed up :)
note that:
SQ.getWithInstruction(&I)
vs
SQ will give different results if the *context instruction* is not I.
I swear there was a case in instcombine where this the case originally, and
i made sure it continues.
On Fri, May 26, 2017 at 10:06 AM, Sanjay Patel via Phabricator <
reviews at reviews.llvm.org> wrote:
> spatel added subscribers: davide, hfinkel, dberlin.
> spatel added a comment.
>
> Can you concoct tests with 'llvm.assume' to show a difference?
>
> I think that raises a question though: this change can make value tracking
> more effective, but it comes with non-zero compile-time cost if I
> understand computeKnownBits() correctly. Do we want to incur that overhead
> without a real-world motivation for the benefit?
> cc'ing @dberlin @davide @hfinkel
>
> Another question along this line: we call Simplify*Inst() for all
> instructions as the first step in every visit*() in InstCombine. In most
> cases, we don't pass a context instruction, but we do for visitICmpInst().
> Is that difference intentional?
>
> if (Value *V = SimplifyICmpInst(I.getPredicate(), Op0, Op1,
> SQ.getWithInstruction(&I)))
> return replaceInstUsesWith(I, V);
>
> vs.
>
> if (Value *V = SimplifyShlInst(Op0, Op1, I.hasNoSignedWrap(),
> I.hasNoUnsignedWrap(), SQ))
> return replaceInstUsesWith(I, V);
>
>
> https://reviews.llvm.org/D33567
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170526/7c07625a/attachment.html>
More information about the llvm-commits
mailing list