diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Analysis/AliasAnalysis.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Analysis/AliasAnalysis.cpp | 19 | 
1 files changed, 17 insertions, 2 deletions
diff --git a/contrib/llvm-project/llvm/lib/Analysis/AliasAnalysis.cpp b/contrib/llvm-project/llvm/lib/Analysis/AliasAnalysis.cpp index 32241e355eb8..1c7678a602d8 100644 --- a/contrib/llvm-project/llvm/lib/Analysis/AliasAnalysis.cpp +++ b/contrib/llvm-project/llvm/lib/Analysis/AliasAnalysis.cpp @@ -44,6 +44,7 @@  #include "llvm/IR/Module.h"  #include "llvm/IR/Type.h"  #include "llvm/IR/Value.h" +#include "llvm/InitializePasses.h"  #include "llvm/Pass.h"  #include "llvm/Support/AtomicOrdering.h"  #include "llvm/Support/Casting.h" @@ -734,6 +735,15 @@ namespace {  } // end anonymous namespace +ExternalAAWrapperPass::ExternalAAWrapperPass() : ImmutablePass(ID) { +  initializeExternalAAWrapperPassPass(*PassRegistry::getPassRegistry()); +} + +ExternalAAWrapperPass::ExternalAAWrapperPass(CallbackT CB) +    : ImmutablePass(ID), CB(std::move(CB)) { +  initializeExternalAAWrapperPassPass(*PassRegistry::getPassRegistry()); +} +  char ExternalAAWrapperPass::ID = 0;  INITIALIZE_PASS(ExternalAAWrapperPass, "external-aa", "External Alias Analysis", @@ -784,7 +794,7 @@ bool AAResultsWrapperPass::runOnFunction(Function &F) {    // previous object first, in this case replacing it with an empty one, before    // registering new results.    AAR.reset( -      new AAResults(getAnalysis<TargetLibraryInfoWrapperPass>().getTLI())); +      new AAResults(getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F)));    // BasicAA is always available for function analyses. Also, we add it first    // so that it can trump TBAA results when it proves MustAlias. @@ -836,11 +846,12 @@ void AAResultsWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const {    AU.addUsedIfAvailable<SCEVAAWrapperPass>();    AU.addUsedIfAvailable<CFLAndersAAWrapperPass>();    AU.addUsedIfAvailable<CFLSteensAAWrapperPass>(); +  AU.addUsedIfAvailable<ExternalAAWrapperPass>();  }  AAResults llvm::createLegacyPMAAResults(Pass &P, Function &F,                                          BasicAAResult &BAR) { -  AAResults AAR(P.getAnalysis<TargetLibraryInfoWrapperPass>().getTLI()); +  AAResults AAR(P.getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F));    // Add in our explicitly constructed BasicAA results.    if (!DisableBasicAA) @@ -861,6 +872,9 @@ AAResults llvm::createLegacyPMAAResults(Pass &P, Function &F,      AAR.addAAResult(WrapperPass->getResult());    if (auto *WrapperPass = P.getAnalysisIfAvailable<CFLSteensAAWrapperPass>())      AAR.addAAResult(WrapperPass->getResult()); +  if (auto *WrapperPass = P.getAnalysisIfAvailable<ExternalAAWrapperPass>()) +    if (WrapperPass->CB) +      WrapperPass->CB(P, F, AAR);    return AAR;  } @@ -904,4 +918,5 @@ void llvm::getAAResultsAnalysisUsage(AnalysisUsage &AU) {    AU.addUsedIfAvailable<GlobalsAAWrapperPass>();    AU.addUsedIfAvailable<CFLAndersAAWrapperPass>();    AU.addUsedIfAvailable<CFLSteensAAWrapperPass>(); +  AU.addUsedIfAvailable<ExternalAAWrapperPass>();  }  | 
