From b7e64ac3acac46ed42b5d099d59af73bedabb6fc Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 17 Mar 2009 23:58:30 +0000 Subject: LSR shouldn't ever try to hack on integer IV's larger than 64-bits. Right now it is not APInt clean, but even when it is it needs to be evaluated carefully to determine whether it is actually profitable. This fixes a crash on PR3806 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67134 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/LoopStrengthReduce.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/Transforms/Scalar/LoopStrengthReduce.cpp') diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp index 79512980a4..6401a4c36a 100644 --- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -592,6 +592,12 @@ bool LoopStrengthReduce::AddUsersIfInteresting(Instruction *I, Loop *L, SmallPtrSet &Processed) { if (!I->getType()->isInteger() && !isa(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. -- cgit v1.2.3-70-g09d2