Minor rewrite per review feedback.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60442 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dale Johannesen 2008-12-02 21:17:11 +00:00
parent 546d7b5c4a
commit fb10cd4901

View File

@ -996,9 +996,14 @@ RemoveCommonExpressionsFromUseBases(std::vector<BasedUser> &Uses,
// Otherwise, remove all of the CSE's we found from each of the base values.
for (unsigned i = 0; i != NumUses; ++i) {
// For this purpose, consider only uses that are inside the loop.
if (!L->contains(Uses[i].Inst->getParent()))
// Uses outside the loop don't necessarily include the common base, but
// the final IV value coming into those uses does. Instead of trying to
// remove the pieces of the common base, which might not be there,
// subtract off the base to compensate for this.
if (!L->contains(Uses[i].Inst->getParent())) {
Uses[i].Base = SE->getMinusSCEV(Uses[i].Base, Result);
continue;
}
// Split the expression into subexprs.
SeparateSubExprs(SubExprs, Uses[i].Base, SE);
@ -1476,12 +1481,6 @@ void LoopStrengthReduce::StrengthReduceStridedIVUsers(const SCEVHandle &Stride,
// Add BaseV to the PHI value if needed.
RewriteExpr = SE->getAddExpr(RewriteExpr, SE->getUnknown(BaseV));
// If this reference is not in the loop and we have a Common base,
// that has been added into the induction variable and must be
// subtracted off here.
if (HaveCommonExprs && !L->contains(User.Inst->getParent()))
RewriteExpr = SE->getMinusSCEV(RewriteExpr, CommonExprs);
User.RewriteInstructionToUseNewBase(RewriteExpr, NewBasePt,
Rewriter, L, this,
DeadInsts);