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

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 24 06:55:55 PDT 2016


Author: spatel
Date: Wed Aug 24 08:55:55 2016
New Revision: 279626

URL: http://llvm.org/viewvc/llvm-project?rev=279626&view=rev
Log:
[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

Modified:
    llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp

Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp?rev=279626&r1=279625&r2=279626&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp (original)
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp Wed Aug 24 08:55:55 2016
@@ -2041,6 +2041,13 @@ Instruction *InstCombiner::foldICmpShrCo
     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.




More information about the llvm-commits mailing list