[llvm-commits] [llvm] r141470 - /llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp
Andrew Trick
atrick at apple.com
Fri Oct 7 19:16:39 PDT 2011
Author: atrick
Date: Fri Oct 7 21:16:39 2011
New Revision: 141470
URL: http://llvm.org/viewvc/llvm-project?rev=141470&view=rev
Log:
Add an extra safety check in front of the optimization in r141442.
Modified:
llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp
Modified: llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp?rev=141470&r1=141469&r2=141470&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp (original)
+++ llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp Fri Oct 7 21:16:39 2011
@@ -908,6 +908,15 @@
if (IncV->getType() != Type::getInt1PtrTy(SE.getContext(), AS)
&& IncV->getType() != Type::getInt8PtrTy(SE.getContext(), AS))
return false;
+ // Ensure the operands dominate the insertion point. I don't know of a
+ // case when this would not be true, so this is somewhat untested.
+ if (L == IVIncInsertLoop) {
+ for (User::op_iterator OI = IncV->op_begin()+1,
+ OE = IncV->op_end(); OI != OE; ++OI)
+ if (Instruction *OInst = dyn_cast<Instruction>(OI))
+ if (!SE.DT->dominates(OInst, IVIncInsertPos))
+ return false;
+ }
break;
}
IncV = dyn_cast<Instruction>(IncV->getOperand(0));
More information about the llvm-commits
mailing list