diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopVersioning.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopVersioning.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopVersioning.cpp b/llvm/lib/Transforms/Utils/LoopVersioning.cpp index 50752bd78a65..16bd08c704ee 100644 --- a/llvm/lib/Transforms/Utils/LoopVersioning.cpp +++ b/llvm/lib/Transforms/Utils/LoopVersioning.cpp @@ -13,15 +13,16 @@ //===----------------------------------------------------------------------===// #include "llvm/Transforms/Utils/LoopVersioning.h" +#include "llvm/ADT/ArrayRef.h" #include "llvm/Analysis/LoopAccessAnalysis.h" #include "llvm/Analysis/LoopInfo.h" -#include "llvm/Analysis/ScalarEvolutionExpander.h" #include "llvm/IR/Dominators.h" #include "llvm/IR/MDBuilder.h" #include "llvm/InitializePasses.h" #include "llvm/Support/CommandLine.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Transforms/Utils/Cloning.h" +#include "llvm/Transforms/Utils/ScalarEvolutionExpander.h" using namespace llvm; @@ -44,9 +45,8 @@ LoopVersioning::LoopVersioning(const LoopAccessInfo &LAI, Loop *L, LoopInfo *LI, } } -void LoopVersioning::setAliasChecks( - SmallVector<RuntimePointerChecking::PointerCheck, 4> Checks) { - AliasChecks = std::move(Checks); +void LoopVersioning::setAliasChecks(ArrayRef<RuntimePointerCheck> Checks) { + AliasChecks = {Checks.begin(), Checks.end()}; } void LoopVersioning::setSCEVChecks(SCEVUnionPredicate Check) { @@ -62,8 +62,10 @@ void LoopVersioning::versionLoop( // Add the memcheck in the original preheader (this is empty initially). BasicBlock *RuntimeCheckBB = VersionedLoop->getLoopPreheader(); + const auto &RtPtrChecking = *LAI.getRuntimePointerChecking(); std::tie(FirstCheckInst, MemRuntimeCheck) = - LAI.addRuntimeChecks(RuntimeCheckBB->getTerminator(), AliasChecks); + addRuntimeChecks(RuntimeCheckBB->getTerminator(), VersionedLoop, + AliasChecks, RtPtrChecking.getSE()); const SCEVUnionPredicate &Pred = LAI.getPSE().getUnionPredicate(); SCEVExpander Exp(*SE, RuntimeCheckBB->getModule()->getDataLayout(), @@ -194,8 +196,7 @@ void LoopVersioning::prepareNoAliasMetadata() { // Go through the checks and for each pointer group, collect the scopes for // each non-aliasing pointer group. - DenseMap<const RuntimePointerChecking::CheckingPtrGroup *, - SmallVector<Metadata *, 4>> + DenseMap<const RuntimeCheckingPtrGroup *, SmallVector<Metadata *, 4>> GroupToNonAliasingScopes; for (const auto &Check : AliasChecks) |