mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 21:20:37 +00:00
Use getConstant instead of getIntegerSCEV. The two are basically the
same, now that getConstant has overloads consistent with ConstantInt::get. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102965 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cec9c50924
commit
deff621abd
@ -761,7 +761,7 @@ static const SCEV *BinomialCoefficient(const SCEV *It, unsigned K,
|
||||
CalculationBits);
|
||||
const SCEV *Dividend = SE.getTruncateOrZeroExtend(It, CalculationTy);
|
||||
for (unsigned i = 1; i != K; ++i) {
|
||||
const SCEV *S = SE.getMinusSCEV(It, SE.getIntegerSCEV(i, It->getType()));
|
||||
const SCEV *S = SE.getMinusSCEV(It, SE.getConstant(It->getType(), i));
|
||||
Dividend = SE.getMulExpr(Dividend,
|
||||
SE.getTruncateOrZeroExtend(S, CalculationTy));
|
||||
}
|
||||
@ -1326,7 +1326,7 @@ const SCEV *ScalarEvolution::getAddExpr(SmallVectorImpl<const SCEV *> &Ops,
|
||||
if (Ops[i] == Ops[i+1]) { // X + Y + Y --> X + Y*2
|
||||
// Found a match, merge the two values into a multiply, and add any
|
||||
// remaining values to the result.
|
||||
const SCEV *Two = getIntegerSCEV(2, Ty);
|
||||
const SCEV *Two = getConstant(Ty, 2);
|
||||
const SCEV *Mul = getMulExpr(Ops[i], Two);
|
||||
if (Ops.size() == 2)
|
||||
return Mul;
|
||||
@ -1443,7 +1443,7 @@ const SCEV *ScalarEvolution::getAddExpr(SmallVectorImpl<const SCEV *> &Ops,
|
||||
Ops.push_back(getMulExpr(getConstant(I->first),
|
||||
getAddExpr(I->second)));
|
||||
if (Ops.empty())
|
||||
return getIntegerSCEV(0, Ty);
|
||||
return getConstant(Ty, 0);
|
||||
if (Ops.size() == 1)
|
||||
return Ops[0];
|
||||
return getAddExpr(Ops);
|
||||
@ -1468,7 +1468,7 @@ const SCEV *ScalarEvolution::getAddExpr(SmallVectorImpl<const SCEV *> &Ops,
|
||||
MulOps.erase(MulOps.begin()+MulOp);
|
||||
InnerMul = getMulExpr(MulOps);
|
||||
}
|
||||
const SCEV *One = getIntegerSCEV(1, Ty);
|
||||
const SCEV *One = getConstant(Ty, 1);
|
||||
const SCEV *AddOne = getAddExpr(InnerMul, One);
|
||||
const SCEV *OuterMul = getMulExpr(AddOne, Ops[AddOp]);
|
||||
if (Ops.size() == 2) return OuterMul;
|
||||
@ -2778,7 +2778,7 @@ const SCEV *ScalarEvolution::createNodeForGEP(GEPOperator *GEP) {
|
||||
// Don't attempt to analyze GEPs over unsized objects.
|
||||
if (!cast<PointerType>(Base->getType())->getElementType()->isSized())
|
||||
return getUnknown(GEP);
|
||||
const SCEV *TotalOffset = getIntegerSCEV(0, IntPtrTy);
|
||||
const SCEV *TotalOffset = getConstant(IntPtrTy, 0);
|
||||
gep_type_iterator GTI = gep_type_begin(GEP);
|
||||
for (GetElementPtrInst::op_iterator I = next(GEP->op_begin()),
|
||||
E = GEP->op_end();
|
||||
@ -3187,7 +3187,7 @@ const SCEV *ScalarEvolution::createSCEV(Value *V) {
|
||||
else if (ConstantInt *CI = dyn_cast<ConstantInt>(V))
|
||||
return getConstant(CI);
|
||||
else if (isa<ConstantPointerNull>(V))
|
||||
return getIntegerSCEV(0, V->getType());
|
||||
return getConstant(V->getType(), 0);
|
||||
else if (GlobalAlias *GA = dyn_cast<GlobalAlias>(V))
|
||||
return GA->mayBeOverridden() ? getUnknown(V) : getSCEV(GA->getAliasee());
|
||||
else
|
||||
@ -3861,7 +3861,7 @@ ScalarEvolution::ComputeBackedgeTakenCountFromExitCond(const Loop *L,
|
||||
return getCouldNotCompute();
|
||||
else
|
||||
// The backedge is never taken.
|
||||
return getIntegerSCEV(0, CI->getType());
|
||||
return getConstant(CI->getType(), 0);
|
||||
}
|
||||
|
||||
// If it's not an integer or pointer comparison then compute it the hard way.
|
||||
@ -4687,7 +4687,7 @@ ScalarEvolution::HowFarToNonZero(const SCEV *V, const Loop *L) {
|
||||
// already. If so, the backedge will execute zero times.
|
||||
if (const SCEVConstant *C = dyn_cast<SCEVConstant>(V)) {
|
||||
if (!C->getValue()->isNullValue())
|
||||
return getIntegerSCEV(0, C->getType());
|
||||
return getConstant(C->getType(), 0);
|
||||
return getCouldNotCompute(); // Otherwise it will loop infinitely.
|
||||
}
|
||||
|
||||
@ -5374,7 +5374,7 @@ const SCEV *ScalarEvolution::getBECount(const SCEV *Start,
|
||||
"This code doesn't handle negative strides yet!");
|
||||
|
||||
const Type *Ty = Start->getType();
|
||||
const SCEV *NegOne = getIntegerSCEV(-1, Ty);
|
||||
const SCEV *NegOne = getConstant(Ty, (uint64_t)-1);
|
||||
const SCEV *Diff = getMinusSCEV(End, Start);
|
||||
const SCEV *RoundUp = getAddExpr(Step, NegOne);
|
||||
|
||||
@ -5430,7 +5430,7 @@ ScalarEvolution::HowManyLessThans(const SCEV *LHS, const SCEV *RHS,
|
||||
// behavior, so if wrap does occur, the loop could either terminate or
|
||||
// loop infinitely, but in either case, the loop is guaranteed to
|
||||
// iterate at least until the iteration where the wrapping occurs.
|
||||
const SCEV *One = getIntegerSCEV(1, Step->getType());
|
||||
const SCEV *One = getConstant(Step->getType(), 1);
|
||||
if (isSigned) {
|
||||
APInt Max = APInt::getSignedMaxValue(BitWidth);
|
||||
if ((Max - getSignedRange(getMinusSCEV(Step, One)).getSignedMax())
|
||||
@ -5481,7 +5481,7 @@ ScalarEvolution::HowManyLessThans(const SCEV *LHS, const SCEV *RHS,
|
||||
// This allows the subsequent ceiling division of (N+(step-1))/step to
|
||||
// compute the correct value.
|
||||
const SCEV *StepMinusOne = getMinusSCEV(Step,
|
||||
getIntegerSCEV(1, Step->getType()));
|
||||
getConstant(Step->getType(), 1));
|
||||
MaxEnd = isSigned ?
|
||||
getSMinExpr(MaxEnd,
|
||||
getMinusSCEV(getConstant(APInt::getSignedMaxValue(BitWidth)),
|
||||
@ -5518,7 +5518,7 @@ const SCEV *SCEVAddRecExpr::getNumIterationsInRange(ConstantRange Range,
|
||||
if (const SCEVConstant *SC = dyn_cast<SCEVConstant>(getStart()))
|
||||
if (!SC->getValue()->isZero()) {
|
||||
SmallVector<const SCEV *, 4> Operands(op_begin(), op_end());
|
||||
Operands[0] = SE.getIntegerSCEV(0, SC->getType());
|
||||
Operands[0] = SE.getConstant(SC->getType(), 0);
|
||||
const SCEV *Shifted = SE.getAddRecExpr(Operands, getLoop());
|
||||
if (const SCEVAddRecExpr *ShiftedAddRec =
|
||||
dyn_cast<SCEVAddRecExpr>(Shifted))
|
||||
@ -5542,7 +5542,7 @@ const SCEV *SCEVAddRecExpr::getNumIterationsInRange(ConstantRange Range,
|
||||
// iteration exits.
|
||||
unsigned BitWidth = SE.getTypeSizeInBits(getType());
|
||||
if (!Range.contains(APInt(BitWidth, 0)))
|
||||
return SE.getIntegerSCEV(0, getType());
|
||||
return SE.getConstant(getType(), 0);
|
||||
|
||||
if (isAffine()) {
|
||||
// If this is an affine expression then we have this situation:
|
||||
|
@ -192,7 +192,7 @@ static bool FactorOutConstant(const SCEV *&S,
|
||||
|
||||
// x/x == 1.
|
||||
if (S == Factor) {
|
||||
S = SE.getIntegerSCEV(1, S->getType());
|
||||
S = SE.getConstant(S->getType(), 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -244,7 +244,7 @@ static bool FactorOutConstant(const SCEV *&S,
|
||||
// Mul's operands. If so, we can just remove it.
|
||||
for (unsigned i = 0, e = M->getNumOperands(); i != e; ++i) {
|
||||
const SCEV *SOp = M->getOperand(i);
|
||||
const SCEV *Remainder = SE.getIntegerSCEV(0, SOp->getType());
|
||||
const SCEV *Remainder = SE.getConstant(SOp->getType(), 0);
|
||||
if (FactorOutConstant(SOp, Remainder, Factor, SE, TD) &&
|
||||
Remainder->isZero()) {
|
||||
SmallVector<const SCEV *, 4> NewMulOps(M->op_begin(), M->op_end());
|
||||
@ -259,7 +259,7 @@ static bool FactorOutConstant(const SCEV *&S,
|
||||
// In an AddRec, check if both start and step are divisible.
|
||||
if (const SCEVAddRecExpr *A = dyn_cast<SCEVAddRecExpr>(S)) {
|
||||
const SCEV *Step = A->getStepRecurrence(SE);
|
||||
const SCEV *StepRem = SE.getIntegerSCEV(0, Step->getType());
|
||||
const SCEV *StepRem = SE.getConstant(Step->getType(), 0);
|
||||
if (!FactorOutConstant(Step, StepRem, Factor, SE, TD))
|
||||
return false;
|
||||
if (!StepRem->isZero())
|
||||
@ -289,7 +289,7 @@ static void SimplifyAddOperands(SmallVectorImpl<const SCEV *> &Ops,
|
||||
SmallVector<const SCEV *, 8> AddRecs(Ops.end() - NumAddRecs, Ops.end());
|
||||
// Let ScalarEvolution sort and simplify the non-addrecs list.
|
||||
const SCEV *Sum = NoAddRecs.empty() ?
|
||||
SE.getIntegerSCEV(0, Ty) :
|
||||
SE.getConstant(Ty, 0) :
|
||||
SE.getAddExpr(NoAddRecs);
|
||||
// If it returned an add, use the operands. Otherwise it simplified
|
||||
// the sum into a single value, so just use that.
|
||||
@ -316,7 +316,7 @@ static void SplitAddRecs(SmallVectorImpl<const SCEV *> &Ops,
|
||||
while (const SCEVAddRecExpr *A = dyn_cast<SCEVAddRecExpr>(Ops[i])) {
|
||||
const SCEV *Start = A->getStart();
|
||||
if (Start->isZero()) break;
|
||||
const SCEV *Zero = SE.getIntegerSCEV(0, Ty);
|
||||
const SCEV *Zero = SE.getConstant(Ty, 0);
|
||||
AddRecs.push_back(SE.getAddRecExpr(Zero,
|
||||
A->getStepRecurrence(SE),
|
||||
A->getLoop()));
|
||||
@ -392,7 +392,7 @@ Value *SCEVExpander::expandAddToGEP(const SCEV *const *op_begin,
|
||||
SmallVector<const SCEV *, 8> NewOps;
|
||||
for (unsigned i = 0, e = Ops.size(); i != e; ++i) {
|
||||
const SCEV *Op = Ops[i];
|
||||
const SCEV *Remainder = SE.getIntegerSCEV(0, Ty);
|
||||
const SCEV *Remainder = SE.getConstant(Ty, 0);
|
||||
if (FactorOutConstant(Op, Remainder, ElSize, SE, SE.TD)) {
|
||||
// Op now has ElSize factored out.
|
||||
ScaledOps.push_back(Op);
|
||||
@ -803,7 +803,7 @@ static void ExposePointerBase(const SCEV *&Base, const SCEV *&Rest,
|
||||
while (const SCEVAddRecExpr *A = dyn_cast<SCEVAddRecExpr>(Base)) {
|
||||
Base = A->getStart();
|
||||
Rest = SE.getAddExpr(Rest,
|
||||
SE.getAddRecExpr(SE.getIntegerSCEV(0, A->getType()),
|
||||
SE.getAddRecExpr(SE.getConstant(A->getType(), 0),
|
||||
A->getStepRecurrence(SE),
|
||||
A->getLoop()));
|
||||
}
|
||||
@ -985,7 +985,7 @@ Value *SCEVExpander::expandAddRecExprLiterally(const SCEVAddRecExpr *S) {
|
||||
const SCEV *PostLoopOffset = 0;
|
||||
if (!Start->properlyDominates(L->getHeader(), SE.DT)) {
|
||||
PostLoopOffset = Start;
|
||||
Start = SE.getIntegerSCEV(0, Normalized->getType());
|
||||
Start = SE.getConstant(Normalized->getType(), 0);
|
||||
Normalized =
|
||||
cast<SCEVAddRecExpr>(SE.getAddRecExpr(Start,
|
||||
Normalized->getStepRecurrence(SE),
|
||||
@ -997,7 +997,7 @@ Value *SCEVExpander::expandAddRecExprLiterally(const SCEVAddRecExpr *S) {
|
||||
const SCEV *PostLoopScale = 0;
|
||||
if (!Step->dominates(L->getHeader(), SE.DT)) {
|
||||
PostLoopScale = Step;
|
||||
Step = SE.getIntegerSCEV(1, Normalized->getType());
|
||||
Step = SE.getConstant(Normalized->getType(), 1);
|
||||
Normalized =
|
||||
cast<SCEVAddRecExpr>(SE.getAddRecExpr(Start, Step,
|
||||
Normalized->getLoop()));
|
||||
@ -1080,7 +1080,7 @@ Value *SCEVExpander::visitAddRecExpr(const SCEVAddRecExpr *S) {
|
||||
// {X,+,F} --> X + {0,+,F}
|
||||
if (!S->getStart()->isZero()) {
|
||||
SmallVector<const SCEV *, 4> NewOps(S->op_begin(), S->op_end());
|
||||
NewOps[0] = SE.getIntegerSCEV(0, Ty);
|
||||
NewOps[0] = SE.getConstant(Ty, 0);
|
||||
const SCEV *Rest = SE.getAddRecExpr(NewOps, L);
|
||||
|
||||
// Turn things like ptrtoint+arithmetic+inttoptr into GEP. See the
|
||||
@ -1108,7 +1108,7 @@ Value *SCEVExpander::visitAddRecExpr(const SCEVAddRecExpr *S) {
|
||||
|
||||
// {0,+,1} --> Insert a canonical induction variable into the loop!
|
||||
if (S->isAffine() &&
|
||||
S->getOperand(1) == SE.getIntegerSCEV(1, Ty)) {
|
||||
S->getOperand(1) == SE.getConstant(Ty, 1)) {
|
||||
// If there's a canonical IV, just use it.
|
||||
if (CanonicalIV) {
|
||||
assert(Ty == SE.getEffectiveSCEVType(CanonicalIV->getType()) &&
|
||||
@ -1342,8 +1342,8 @@ Value *
|
||||
SCEVExpander::getOrInsertCanonicalInductionVariable(const Loop *L,
|
||||
const Type *Ty) {
|
||||
assert(Ty->isIntegerTy() && "Can only insert integer induction variables!");
|
||||
const SCEV *H = SE.getAddRecExpr(SE.getIntegerSCEV(0, Ty),
|
||||
SE.getIntegerSCEV(1, Ty), L);
|
||||
const SCEV *H = SE.getAddRecExpr(SE.getConstant(Ty, 0),
|
||||
SE.getConstant(Ty, 1), L);
|
||||
BasicBlock *SaveInsertBB = Builder.GetInsertBlock();
|
||||
BasicBlock::iterator SaveInsertPt = Builder.GetInsertPoint();
|
||||
Value *V = expandCodeFor(H, 0, L->getHeader()->begin());
|
||||
|
@ -144,10 +144,10 @@ ICmpInst *IndVarSimplify::LinearFunctionTestReplace(Loop *L,
|
||||
ICmpInst *OrigCond = dyn_cast<ICmpInst>(BI->getCondition());
|
||||
if (!OrigCond) return 0;
|
||||
const SCEV *R = SE->getSCEV(OrigCond->getOperand(1));
|
||||
R = SE->getMinusSCEV(R, SE->getIntegerSCEV(1, R->getType()));
|
||||
R = SE->getMinusSCEV(R, SE->getConstant(R->getType(), 1));
|
||||
if (R != BackedgeTakenCount) {
|
||||
const SCEV *L = SE->getSCEV(OrigCond->getOperand(0));
|
||||
L = SE->getMinusSCEV(L, SE->getIntegerSCEV(1, L->getType()));
|
||||
L = SE->getMinusSCEV(L, SE->getConstant(L->getType(), 1));
|
||||
if (L != BackedgeTakenCount)
|
||||
return 0;
|
||||
}
|
||||
@ -162,10 +162,10 @@ ICmpInst *IndVarSimplify::LinearFunctionTestReplace(Loop *L,
|
||||
// Add one to the "backedge-taken" count to get the trip count.
|
||||
// If this addition may overflow, we have to be more pessimistic and
|
||||
// cast the induction variable before doing the add.
|
||||
const SCEV *Zero = SE->getIntegerSCEV(0, BackedgeTakenCount->getType());
|
||||
const SCEV *Zero = SE->getConstant(BackedgeTakenCount->getType(), 0);
|
||||
const SCEV *N =
|
||||
SE->getAddExpr(BackedgeTakenCount,
|
||||
SE->getIntegerSCEV(1, BackedgeTakenCount->getType()));
|
||||
SE->getConstant(BackedgeTakenCount->getType(), 1));
|
||||
if ((isa<SCEVConstant>(N) && !N->isZero()) ||
|
||||
SE->isLoopEntryGuardedByCond(L, ICmpInst::ICMP_NE, N, Zero)) {
|
||||
// No overflow. Cast the sum.
|
||||
@ -175,7 +175,7 @@ ICmpInst *IndVarSimplify::LinearFunctionTestReplace(Loop *L,
|
||||
RHS = SE->getTruncateOrZeroExtend(BackedgeTakenCount,
|
||||
IndVar->getType());
|
||||
RHS = SE->getAddExpr(RHS,
|
||||
SE->getIntegerSCEV(1, IndVar->getType()));
|
||||
SE->getConstant(IndVar->getType(), 1));
|
||||
}
|
||||
|
||||
// The BackedgeTaken expression contains the number of times that the
|
||||
@ -434,7 +434,7 @@ void IndVarSimplify::EliminateIVRemainders() {
|
||||
else {
|
||||
// (i+1) % n --> (i+1)==n?0:(i+1) if i is in [0,n).
|
||||
const SCEV *LessOne =
|
||||
SE->getMinusSCEV(S, SE->getIntegerSCEV(1, S->getType()));
|
||||
SE->getMinusSCEV(S, SE->getConstant(S->getType(), 1));
|
||||
if ((!isSigned || SE->isKnownNonNegative(LessOne)) &&
|
||||
SE->isKnownPredicate(isSigned ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT,
|
||||
LessOne, X)) {
|
||||
|
@ -221,7 +221,7 @@ static void DoInitialMatch(const SCEV *S, Loop *L,
|
||||
if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S))
|
||||
if (!AR->getStart()->isZero()) {
|
||||
DoInitialMatch(AR->getStart(), L, Good, Bad, SE, DT);
|
||||
DoInitialMatch(SE.getAddRecExpr(SE.getIntegerSCEV(0, AR->getType()),
|
||||
DoInitialMatch(SE.getAddRecExpr(SE.getConstant(AR->getType(), 0),
|
||||
AR->getStepRecurrence(SE),
|
||||
AR->getLoop()),
|
||||
L, Good, Bad, SE, DT);
|
||||
@ -379,7 +379,7 @@ static const SCEV *getExactSDiv(const SCEV *LHS, const SCEV *RHS,
|
||||
bool IgnoreSignificantBits = false) {
|
||||
// Handle the trivial case, which works for any SCEV type.
|
||||
if (LHS == RHS)
|
||||
return SE.getIntegerSCEV(1, LHS->getType());
|
||||
return SE.getConstant(LHS->getType(), 1);
|
||||
|
||||
// Handle x /s -1 as x * -1, to give ScalarEvolution a chance to do some
|
||||
// folding.
|
||||
@ -454,7 +454,7 @@ static const SCEV *getExactSDiv(const SCEV *LHS, const SCEV *RHS,
|
||||
static int64_t ExtractImmediate(const SCEV *&S, ScalarEvolution &SE) {
|
||||
if (const SCEVConstant *C = dyn_cast<SCEVConstant>(S)) {
|
||||
if (C->getValue()->getValue().getMinSignedBits() <= 64) {
|
||||
S = SE.getIntegerSCEV(0, C->getType());
|
||||
S = SE.getConstant(C->getType(), 0);
|
||||
return C->getValue()->getSExtValue();
|
||||
}
|
||||
} else if (const SCEVAddExpr *Add = dyn_cast<SCEVAddExpr>(S)) {
|
||||
@ -477,7 +477,7 @@ static int64_t ExtractImmediate(const SCEV *&S, ScalarEvolution &SE) {
|
||||
static GlobalValue *ExtractSymbol(const SCEV *&S, ScalarEvolution &SE) {
|
||||
if (const SCEVUnknown *U = dyn_cast<SCEVUnknown>(S)) {
|
||||
if (GlobalValue *GV = dyn_cast<GlobalValue>(U->getValue())) {
|
||||
S = SE.getIntegerSCEV(0, GV->getType());
|
||||
S = SE.getConstant(GV->getType(), 0);
|
||||
return GV;
|
||||
}
|
||||
} else if (const SCEVAddExpr *Add = dyn_cast<SCEVAddExpr>(S)) {
|
||||
@ -1457,7 +1457,7 @@ ICmpInst *LSRInstance::OptimizeMax(ICmpInst *Cond, IVStrideUse* &CondUse) {
|
||||
const SCEV *BackedgeTakenCount = SE.getBackedgeTakenCount(L);
|
||||
if (isa<SCEVCouldNotCompute>(BackedgeTakenCount))
|
||||
return Cond;
|
||||
const SCEV *One = SE.getIntegerSCEV(1, BackedgeTakenCount->getType());
|
||||
const SCEV *One = SE.getConstant(BackedgeTakenCount->getType(), 1);
|
||||
|
||||
// Add one to the backedge-taken count to get the trip count.
|
||||
const SCEV *IterationCount = SE.getAddExpr(BackedgeTakenCount, One);
|
||||
@ -2032,7 +2032,7 @@ static void CollectSubexprs(const SCEV *S, const SCEVConstant *C,
|
||||
} else if (const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(S)) {
|
||||
// Split a non-zero base out of an addrec.
|
||||
if (!AR->getStart()->isZero()) {
|
||||
CollectSubexprs(SE.getAddRecExpr(SE.getIntegerSCEV(0, AR->getType()),
|
||||
CollectSubexprs(SE.getAddRecExpr(SE.getConstant(AR->getType(), 0),
|
||||
AR->getStepRecurrence(SE),
|
||||
AR->getLoop()), C, Ops, SE);
|
||||
CollectSubexprs(AR->getStart(), C, Ops, SE);
|
||||
@ -2178,7 +2178,7 @@ void LSRInstance::GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx,
|
||||
F.AM.BaseOffs = (uint64_t)Base.AM.BaseOffs - *I;
|
||||
if (isLegalUse(F.AM, LU.MinOffset - *I, LU.MaxOffset - *I,
|
||||
LU.Kind, LU.AccessTy, TLI)) {
|
||||
F.BaseRegs[i] = SE.getAddExpr(G, SE.getIntegerSCEV(*I, G->getType()));
|
||||
F.BaseRegs[i] = SE.getAddExpr(G, SE.getConstant(G->getType(), *I));
|
||||
|
||||
(void)InsertFormula(LU, LUIdx, F);
|
||||
}
|
||||
@ -2241,7 +2241,7 @@ void LSRInstance::GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx,
|
||||
// Compensate for the use having MinOffset built into it.
|
||||
F.AM.BaseOffs = (uint64_t)F.AM.BaseOffs + Offset - LU.MinOffset;
|
||||
|
||||
const SCEV *FactorS = SE.getIntegerSCEV(Factor, IntTy);
|
||||
const SCEV *FactorS = SE.getConstant(IntTy, Factor);
|
||||
|
||||
// Check that multiplying with each base register doesn't overflow.
|
||||
for (size_t i = 0, e = F.BaseRegs.size(); i != e; ++i) {
|
||||
@ -2303,7 +2303,7 @@ void LSRInstance::GenerateScales(LSRUse &LU, unsigned LUIdx,
|
||||
for (size_t i = 0, e = Base.BaseRegs.size(); i != e; ++i)
|
||||
if (const SCEVAddRecExpr *AR =
|
||||
dyn_cast<SCEVAddRecExpr>(Base.BaseRegs[i])) {
|
||||
const SCEV *FactorS = SE.getIntegerSCEV(Factor, IntTy);
|
||||
const SCEV *FactorS = SE.getConstant(IntTy, Factor);
|
||||
if (FactorS->isZero())
|
||||
continue;
|
||||
// Divide out the factor, ignoring high bits, since we'll be
|
||||
@ -3033,8 +3033,7 @@ Value *LSRInstance::Expand(const LSRFixup &LF,
|
||||
// which is expected to be matched as part of the address.
|
||||
ScaledS = SE.getUnknown(Rewriter.expandCodeFor(ScaledS, 0, IP));
|
||||
ScaledS = SE.getMulExpr(ScaledS,
|
||||
SE.getIntegerSCEV(F.AM.Scale,
|
||||
ScaledS->getType()));
|
||||
SE.getConstant(ScaledS->getType(), F.AM.Scale));
|
||||
Ops.push_back(ScaledS);
|
||||
|
||||
// Flush the operand list to suppress SCEVExpander hoisting.
|
||||
@ -3075,7 +3074,7 @@ Value *LSRInstance::Expand(const LSRFixup &LF,
|
||||
|
||||
// Emit instructions summing all the operands.
|
||||
const SCEV *FullS = Ops.empty() ?
|
||||
SE.getIntegerSCEV(0, IntTy) :
|
||||
SE.getConstant(IntTy, 0) :
|
||||
SE.getAddExpr(Ops);
|
||||
Value *FullV = Rewriter.expandCodeFor(FullS, Ty, IP);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user