[PATCH] D23819: [InstCombine] add assert and explanatory comment for fold removed in r279568; NFC
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 23 15:39:06 PDT 2016
spatel created this revision.
spatel added a reviewer: eli.friedman.
spatel added a subscriber: llvm-commits.
Herald added a subscriber: mcrosier.
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.
https://reviews.llvm.org/D23819
Files:
lib/Transforms/InstCombine/InstCombineCompares.cpp
Index: lib/Transforms/InstCombine/InstCombineCompares.cpp
===================================================================
--- lib/Transforms/InstCombine/InstCombineCompares.cpp
+++ lib/Transforms/InstCombine/InstCombineCompares.cpp
@@ -2041,6 +2041,13 @@
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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23819.69047.patch
Type: text/x-patch
Size: 866 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160823/6831ac51/attachment.bin>
More information about the llvm-commits
mailing list