[PATCH] D29220: [InstCombine] Re-enable guard canonicalization for AND and NOT OR

Sanjoy Das via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 31 01:15:19 PST 2017

sanjoy requested changes to this revision.
sanjoy added a comment.
This revision now requires changes to proceed.

As I said in the commit thread for https://reviews.llvm.org/rL293058, I don't think this is the right direction.

- This is almost the opposite of widening; running this after widening will undo widening.
- This increases the number of uses of deopt values, which will disable other instcombine transforms.
- I suspect we'll have to pull some heroics to not regress code size.  This is addressable with some effort, but I'd rather spend that effort on improving passes that fall over today on `guard(X & Y)`.

I think the canonical form be a maximally widened guard, and not the converse.  I would instead look at passes that seem deficient in terms of analyzing widened guards, and fix them.


More information about the llvm-commits mailing list