reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Scalar/LoopStrengthReduce.cpp
  450       BaseRegs.push_back(Sum);
  456       BaseRegs.push_back(Sum);
  467     return BaseRegs.size() <= 1;
  472   if (Scale == 1 && BaseRegs.empty())
  483       find_if(make_range(BaseRegs.begin(), BaseRegs.end()), [&](const SCEV *S) {
  483       find_if(make_range(BaseRegs.begin(), BaseRegs.end()), [&](const SCEV *S) {
  487   return I == BaseRegs.end();
  501   assert(!BaseRegs.empty() && "1*reg => reg, should not be needed.");
  505     ScaledReg = BaseRegs.back();
  506     BaseRegs.pop_back();
  515     auto I = find_if(make_range(BaseRegs.begin(), BaseRegs.end()),
  515     auto I = find_if(make_range(BaseRegs.begin(), BaseRegs.end()),
  520     if (I != BaseRegs.end())
  533   BaseRegs.push_back(ScaledReg);
  541   if (BaseRegs.size() != 1 || ScaledReg)
  549   return !!ScaledReg + BaseRegs.size();
  555   return !BaseRegs.empty() ? BaseRegs.front()->getType() :
  555   return !BaseRegs.empty() ? BaseRegs.front()->getType() :
  563   if (&S != &BaseRegs.back())
  564     std::swap(S, BaseRegs.back());
  565   BaseRegs.pop_back();
  570   return S == ScaledReg || is_contained(BaseRegs, S);
  580   for (const SCEV *BaseReg : BaseRegs)
  597   for (const SCEV *BaseReg : BaseRegs) {
  601   if (HasBaseReg && BaseRegs.empty()) {
  604   } else if (!HasBaseReg && !BaseRegs.empty()) {
 1341   for (const SCEV *BaseReg : F.BaseRegs) {
 1515   SmallVector<const SCEV *, 4> Key = F.BaseRegs;
 1539   SmallVector<const SCEV *, 4> Key = F.BaseRegs;
 1551   for (const SCEV *BaseReg : F.BaseRegs)
 1559   Regs.insert(F.BaseRegs.begin(), F.BaseRegs.end());
 1559   Regs.insert(F.BaseRegs.begin(), F.BaseRegs.end());
 1580     Regs.insert(F.BaseRegs.begin(), F.BaseRegs.end());
 1580     Regs.insert(F.BaseRegs.begin(), F.BaseRegs.end());
 2631         if (F.BaseRegs == OrigF.BaseRegs &&
 2631         if (F.BaseRegs == OrigF.BaseRegs &&
 3355   F.BaseRegs.push_back(S);
 3365   for (const SCEV *BaseReg : F.BaseRegs)
 3573   const SCEV *BaseReg = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx];
 3630         F.BaseRegs.erase(F.BaseRegs.begin() + Idx);
 3630         F.BaseRegs.erase(F.BaseRegs.begin() + Idx);
 3634       F.BaseRegs[Idx] = InnerSum;
 3644       F.BaseRegs.push_back(*J);
 3669   for (size_t i = 0, e = Base.BaseRegs.size(); i != e; ++i)
 3682   if (Base.BaseRegs.size() + (Base.Scale == 1) +
 3691   NewBase.BaseRegs.clear();
 3693   for (const SCEV *BaseReg : Base.BaseRegs) {
 3701       NewBase.BaseRegs.push_back(BaseReg);
 3719     F.BaseRegs.push_back(Sum);
 3745   const SCEV *G = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx];
 3756     F.BaseRegs[Idx] = G;
 3766   for (size_t i = 0, e = Base.BaseRegs.size(); i != e; ++i)
 3792           F.deleteBaseReg(F.BaseRegs[Idx]);
 3797         F.BaseRegs[Idx] = NewG;
 3803   const SCEV *G = IsScaledReg ? Base.ScaledReg : Base.BaseRegs[Idx];
 3841     F.BaseRegs[Idx] = G;
 3855   for (size_t i = 0, e = Base.BaseRegs.size(); i != e; ++i)
 3879   for (const SCEV *BaseReg : Base.BaseRegs)
 3922     for (size_t i = 0, e = F.BaseRegs.size(); i != e; ++i) {
 3923       F.BaseRegs[i] = SE.getMulExpr(F.BaseRegs[i], FactorS);
 3923       F.BaseRegs[i] = SE.getMulExpr(F.BaseRegs[i], FactorS);
 3924       if (getExactSDiv(F.BaseRegs[i], FactorS, SE) != Base.BaseRegs[i])
 3924       if (getExactSDiv(F.BaseRegs[i], FactorS, SE) != Base.BaseRegs[i])
 3972     Base.HasBaseReg = Base.BaseRegs.size() > 1;
 3992     for (size_t i = 0, e = Base.BaseRegs.size(); i != e; ++i) {
 3993       const SCEVAddRecExpr *AR = dyn_cast<SCEVAddRecExpr>(Base.BaseRegs[i]);
 4004           F.deleteBaseReg(F.BaseRegs[i]);
 4008           if (F.Scale == 1 && (F.BaseRegs.empty() ||
 4047       for (const SCEV *&BaseReg : F.BaseRegs) {
 4230         for (size_t N = 0, NE = F.BaseRegs.size(); N != NE; ++N) {
 4231           const SCEV *BaseReg = F.BaseRegs[N];
 4246           NewF.BaseRegs[N] = SE.getAddExpr(NegImmS, BaseReg);
 4251           for (const SCEV *NewReg : NewF.BaseRegs)
 4356         for (const SCEV *Reg : F.BaseRegs) {
 4446              I = F.BaseRegs.begin(), E = F.BaseRegs.end(); I != E; ++I) {
 4446              I = F.BaseRegs.begin(), E = F.BaseRegs.end(); I != E; ++I) {
 4452             NewF.BaseRegs.erase(NewF.BaseRegs.begin() +
 4452             NewF.BaseRegs.erase(NewF.BaseRegs.begin() +
 4453                                 (I - F.BaseRegs.begin()));
 4468                 NewF.BaseRegs.erase(NewF.BaseRegs.begin() +
 4468                 NewF.BaseRegs.erase(NewF.BaseRegs.begin() +
 4469                                     (I - F.BaseRegs.begin()));
 4613       for (const SCEV *Reg : FA.BaseRegs) {
 4618       for (const SCEV *Reg : FB.BaseRegs) {
 4766       for (const SCEV *BaseReg : F.BaseRegs) {
 4804     UniqRegs.insert(F.BaseRegs.begin(), F.BaseRegs.end());
 4804     UniqRegs.insert(F.BaseRegs.begin(), F.BaseRegs.end());
 4928           is_contained(F.BaseRegs, Reg)) {
 4951           VisitedRegs.insert(F.ScaledReg ? F.ScaledReg : F.BaseRegs[0]);
 5160   for (const SCEV *Reg : F.BaseRegs) {