diff options
Diffstat (limited to 'lib/Transforms/Vectorize/LoopVectorize.cpp')
| -rw-r--r-- | lib/Transforms/Vectorize/LoopVectorize.cpp | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/Transforms/Vectorize/LoopVectorize.cpp b/lib/Transforms/Vectorize/LoopVectorize.cpp index 578c65daf7c0..1b1f86f8efdc 100644 --- a/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -80,6 +80,7 @@  #include "llvm/IR/Module.h"  #include "llvm/IR/PatternMatch.h"  #include "llvm/IR/Type.h" +#include "llvm/IR/User.h"  #include "llvm/IR/Value.h"  #include "llvm/IR/ValueHandle.h"  #include "llvm/IR/Verifier.h" @@ -6949,9 +6950,9 @@ unsigned LoopVectorizationCostModel::getInstructionCost(Instruction *I,      } else if (Legal->isUniform(Op2)) {        Op2VK = TargetTransformInfo::OK_UniformValue;      } - -    return TTI.getArithmeticInstrCost(I->getOpcode(), VectorTy, Op1VK, Op2VK, -                                      Op1VP, Op2VP); +    SmallVector<const Value *, 4> Operands(I->operand_values());  +    return TTI.getArithmeticInstrCost(I->getOpcode(), VectorTy, Op1VK, +                                      Op2VK, Op1VP, Op2VP, Operands);    }    case Instruction::Select: {      SelectInst *SI = cast<SelectInst>(I); @@ -7641,7 +7642,7 @@ PreservedAnalyses LoopVectorizePass::run(Function &F,      auto &TTI = AM.getResult<TargetIRAnalysis>(F);      auto &DT = AM.getResult<DominatorTreeAnalysis>(F);      auto &BFI = AM.getResult<BlockFrequencyAnalysis>(F); -    auto *TLI = AM.getCachedResult<TargetLibraryAnalysis>(F); +    auto &TLI = AM.getResult<TargetLibraryAnalysis>(F);      auto &AA = AM.getResult<AAManager>(F);      auto &AC = AM.getResult<AssumptionAnalysis>(F);      auto &DB = AM.getResult<DemandedBitsAnalysis>(F); @@ -7650,10 +7651,11 @@ PreservedAnalyses LoopVectorizePass::run(Function &F,      auto &LAM = AM.getResult<LoopAnalysisManagerFunctionProxy>(F).getManager();      std::function<const LoopAccessInfo &(Loop &)> GetLAA =          [&](Loop &L) -> const LoopAccessInfo & { -      return LAM.getResult<LoopAccessAnalysis>(L); +      LoopStandardAnalysisResults AR = {AA, AC, DT, LI, SE, TLI, TTI}; +      return LAM.getResult<LoopAccessAnalysis>(L, AR);      };      bool Changed = -        runImpl(F, SE, LI, TTI, DT, BFI, TLI, DB, AA, AC, GetLAA, ORE); +        runImpl(F, SE, LI, TTI, DT, BFI, &TLI, DB, AA, AC, GetLAA, ORE);      if (!Changed)        return PreservedAnalyses::all();      PreservedAnalyses PA;  | 
