simplify this, isBytewiseValue handles the extra check. We still
authorChris Lattner <sabre@nondot.org>
Tue, 28 Dec 2010 18:53:48 +0000 (18:53 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 28 Dec 2010 18:53:48 +0000 (18:53 +0000)
check for "multiple of a byte" in size to make it clear that the
>> 3 below is safe.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122604 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopIdiomRecognize.cpp

index 7565b7058209cfa6c1efff6987d8b57fda9c6b7d..2b6723f0cafe0c434d28bf85e90dc440b2d4efda 100644 (file)
@@ -164,12 +164,9 @@ bool LoopIdiomRecognize::processLoopStore(StoreInst *SI, const SCEV *BECount) {
   Value *StoredVal = SI->getValueOperand();
   Value *StorePtr = SI->getPointerOperand();
   
-  // Check to see if the store updates all bits in memory.  We don't want to
-  // process things like a store of i3.  We also require that the store be a
-  // multiple of a byte.
+  // Reject stores that are so large that they overflow an unsigned.
   uint64_t SizeInBits = TD->getTypeSizeInBits(StoredVal->getType());
-  if ((SizeInBits & 7) || (SizeInBits >> 32) != 0 ||
-      SizeInBits != TD->getTypeStoreSizeInBits(StoredVal->getType()))
+  if ((SizeInBits & 7) || (SizeInBits >> 32) != 0)
     return false;
   
   // See if the pointer expression is an AddRec like {base,+,1} on the current