LSR shouldn't ever try to hack on integer IV's larger than 64-bits. Right now
[oota-llvm.git] / lib / Transforms / Scalar / LoopStrengthReduce.cpp
index 79512980a4a857077dd171ee22a235b96c6e0039..6401a4c36a22817372a751bef163d42be9f1fd15 100644 (file)
@@ -592,6 +592,12 @@ bool LoopStrengthReduce::AddUsersIfInteresting(Instruction *I, Loop *L,
                                       SmallPtrSet<Instruction*,16> &Processed) {
   if (!I->getType()->isInteger() && !isa<PointerType>(I->getType()))
     return false;   // Void and FP expressions cannot be reduced.
+
+  // LSR is not APInt clean, do not touch integers bigger than 64-bits.
+  if (I->getType()->isInteger() && 
+      I->getType()->getPrimitiveSizeInBits() > 64)
+    return false;
+  
   if (!Processed.insert(I))
     return true;    // Instruction already handled.