[PATCH] D67356: [InstCombine] Simplify @llvm.usub.with.overflow+non-zero check (PR43251)
Vedant Kumar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 9 13:25:58 PDT 2019
vsk added inline comments.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp:2249
+ if (Value *X = foldUnsignedUnderflowCheck(RHS, LHS, /*IsAnd=*/false, Builder))
+ return X;
+
----------------
lebedev.ri wrote:
> vsk wrote:
> > Does the 'or of icmps' case arise anywhere?
> Define arise. We can trivially get one from another via De Morgan laws:
> `(a && b) ? c : d` <--> `!(a && b) ? d : c` <--> `(!a || !b) ? d : c`,
> It's *really* bad idea to intentionally not handle such nearby patterns.
>
As in, do unsigned underflow checks tend to contain this specific or-of-icmp pattern, or more generally whether programs in the wild tend to.
If this isn't the case, then it seems like there's a compile-time cost for optimizing the pattern without any compensating benefit.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D67356/new/
https://reviews.llvm.org/D67356
More information about the llvm-commits
mailing list