[llvm-commits] [llvm] r71090 - /llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp

David Greene greened at obbligato.org
Wed May 6 10:39:54 PDT 2009


Author: greened
Date: Wed May  6 12:39:26 2009
New Revision: 71090

URL: http://llvm.org/viewvc/llvm-project?rev=71090&view=rev
Log:

Make sure to use signed arithmetic in APInt to fix a regression.

Modified:
    llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp?rev=71090&r1=71089&r2=71090&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LoopStrengthReduce.cpp Wed May  6 12:39:26 2009
@@ -2027,9 +2027,10 @@
 
       Scale = SSInt / CmpSSInt;
       int64_t NewCmpVal = CmpVal * Scale;
-      APInt Mul = APInt(BitWidth, NewCmpVal);
+      APInt Mul = APInt(BitWidth*2, CmpVal, true);
+      Mul = Mul * APInt(BitWidth*2, Scale, true);
       // Check for overflow.
-      if (Mul.getSExtValue() != NewCmpVal)
+      if (!Mul.isSignedIntN(BitWidth)) {
         continue;
 
       // Watch out for overflow.





More information about the llvm-commits mailing list