forked from OSchip/llvm-project
[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:
parent
a7ed090bba
commit
8e297749c1
llvm/lib/Transforms/InstCombine
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue