forked from OSchip/llvm-project
parent
5a6ef49e70
commit
f7a588b909
|
@ -767,9 +767,9 @@ static bool isTargetConstant(const SCEVHandle &V, const Type *UseTy,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// MoveLoopVariantsToImediateField - Move any subexpressions from Val that are
|
/// MoveLoopVariantsToImmediateField - Move any subexpressions from Val that are
|
||||||
/// loop varying to the Imm operand.
|
/// loop varying to the Imm operand.
|
||||||
static void MoveLoopVariantsToImediateField(SCEVHandle &Val, SCEVHandle &Imm,
|
static void MoveLoopVariantsToImmediateField(SCEVHandle &Val, SCEVHandle &Imm,
|
||||||
Loop *L, ScalarEvolution *SE) {
|
Loop *L, ScalarEvolution *SE) {
|
||||||
if (Val->isLoopInvariant(L)) return; // Nothing to do.
|
if (Val->isLoopInvariant(L)) return; // Nothing to do.
|
||||||
|
|
||||||
|
@ -793,7 +793,7 @@ static void MoveLoopVariantsToImediateField(SCEVHandle &Val, SCEVHandle &Imm,
|
||||||
} else if (SCEVAddRecExpr *SARE = dyn_cast<SCEVAddRecExpr>(Val)) {
|
} else if (SCEVAddRecExpr *SARE = dyn_cast<SCEVAddRecExpr>(Val)) {
|
||||||
// Try to pull immediates out of the start value of nested addrec's.
|
// Try to pull immediates out of the start value of nested addrec's.
|
||||||
SCEVHandle Start = SARE->getStart();
|
SCEVHandle Start = SARE->getStart();
|
||||||
MoveLoopVariantsToImediateField(Start, Imm, L, SE);
|
MoveLoopVariantsToImmediateField(Start, Imm, L, SE);
|
||||||
|
|
||||||
std::vector<SCEVHandle> Ops(SARE->op_begin(), SARE->op_end());
|
std::vector<SCEVHandle> Ops(SARE->op_begin(), SARE->op_end());
|
||||||
Ops[0] = Start;
|
Ops[0] = Start;
|
||||||
|
@ -1183,7 +1183,7 @@ SCEVHandle LoopStrengthReduce::CollectIVUsers(const SCEVHandle &Stride,
|
||||||
// Move any loop variant operands from the offset field to the immediate
|
// Move any loop variant operands from the offset field to the immediate
|
||||||
// field of the use, so that we don't try to use something before it is
|
// field of the use, so that we don't try to use something before it is
|
||||||
// computed.
|
// computed.
|
||||||
MoveLoopVariantsToImediateField(UsersToProcess.back().Base,
|
MoveLoopVariantsToImmediateField(UsersToProcess.back().Base,
|
||||||
UsersToProcess.back().Imm, L, SE);
|
UsersToProcess.back().Imm, L, SE);
|
||||||
assert(UsersToProcess.back().Base->isLoopInvariant(L) &&
|
assert(UsersToProcess.back().Base->isLoopInvariant(L) &&
|
||||||
"Base value is not loop invariant!");
|
"Base value is not loop invariant!");
|
||||||
|
|
Loading…
Reference in New Issue