[InstCombine] add assert and explanatory comment for fold removed in r279568; NFC

I deleted a fold from InstCombine at:
https://reviews.llvm.org/rL279568

because it (like any InstCombine to a constant?) should always happen in InstSimplify,
however, it's not obvious what the assumptions are in the remaining code.

Add a comment and assert to make it clearer.

Differential Revision: https://reviews.llvm.org/D23819

llvm-svn: 279626
This commit is contained in:
Sanjay Patel 2016-08-24 13:55:55 +00:00
parent a7ed090bba
commit 8e297749c1
1 changed files with 7 additions and 0 deletions
llvm/lib/Transforms/InstCombine

View File

@ -2041,6 +2041,13 @@ Instruction *InstCombiner::foldICmpShrConstant(ICmpInst &Cmp,
return Res;
}
// If the comparison constant changes with the shift, the comparison cannot
// succeed (bits of the comparison constant cannot match the shifted value).
// This should be known by InstSimplify and already be folded to true/false.
assert(((IsAShr && C->shl(ShAmtVal).ashr(ShAmtVal) == *C) ||
(!IsAShr && C->shl(ShAmtVal).lshr(ShAmtVal) == *C)) &&
"Expected icmp+shr simplify did not occur.");
// Check if the bits shifted out are known to be zero. If so, we can compare
// against the unshifted value:
// (X & 4) >> 1 == 2 --> (X & 4) == 4.