diff options
| author | Aditya Kumar <hiraditya@msn.com> | 2018-10-03 05:55:20 +0000 | 
|---|---|---|
| committer | Aditya Kumar <hiraditya@msn.com> | 2018-10-03 05:55:20 +0000 | 
| commit | 9e20ade72aeb950cb4849de8396821234f8c2ef6 (patch) | |
| tree | f3c62c9ca80157ed461d560120e0eb27976b5764 /llvm/lib/Transforms/IPO | |
| parent | 101d9eae23b5e15d462b926e91c49ae5b445b581 (diff) | |
| download | bcm5719-llvm-9e20ade72aeb950cb4849de8396821234f8c2ef6.tar.gz bcm5719-llvm-9e20ade72aeb950cb4849de8396821234f8c2ef6.zip  | |
Add support for new pass manager
Modified the testcases to use both pass managers
Use single commandline flag for both pass managers.
Differential Revision: https://reviews.llvm.org/D52708
Reviewers: sebpop, tejohnson, brzycki, SirishP
Reviewed By: tejohnson, brzycki
llvm-svn: 343662
Diffstat (limited to 'llvm/lib/Transforms/IPO')
| -rw-r--r-- | llvm/lib/Transforms/IPO/HotColdSplitting.cpp | 33 | 
1 files changed, 33 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/HotColdSplitting.cpp b/llvm/lib/Transforms/IPO/HotColdSplitting.cpp index be64da5d808..820d08316d6 100644 --- a/llvm/lib/Transforms/IPO/HotColdSplitting.cpp +++ b/llvm/lib/Transforms/IPO/HotColdSplitting.cpp @@ -44,6 +44,7 @@  #include "llvm/Support/Debug.h"  #include "llvm/Support/raw_ostream.h"  #include "llvm/Transforms/IPO.h" +#include "llvm/Transforms/IPO/HotColdSplitting.h"  #include "llvm/Transforms/Scalar.h"  #include "llvm/Transforms/Utils/BasicBlockUtils.h"  #include "llvm/Transforms/Utils/Cloning.h" @@ -409,6 +410,38 @@ bool HotColdSplittingLegacyPass::runOnModule(Module &M) {    return HotColdSplitting(PSI, GBFI, GTTI, &GetORE).run(M);  } +PreservedAnalyses +HotColdSplittingPass::run(Module &M, ModuleAnalysisManager &AM) { +  auto &FAM = AM.getResult<FunctionAnalysisManagerModuleProxy>(M).getManager(); + +  std::function<AssumptionCache &(Function &)> GetAssumptionCache = +      [&FAM](Function &F) -> AssumptionCache & { +    return FAM.getResult<AssumptionAnalysis>(F); +  }; + +  auto GBFI = [&FAM](Function &F) { +    return &FAM.getResult<BlockFrequencyAnalysis>(F); +  }; + +  std::function<TargetTransformInfo &(Function &)> GTTI = +      [&FAM](Function &F) -> TargetTransformInfo & { +    return FAM.getResult<TargetIRAnalysis>(F); +  }; + +  std::unique_ptr<OptimizationRemarkEmitter> ORE; +  std::function<OptimizationRemarkEmitter &(Function &)> GetORE = +      [&ORE](Function &F) -> OptimizationRemarkEmitter & { +    ORE.reset(new OptimizationRemarkEmitter(&F)); +    return *ORE.get(); +  }; + +  ProfileSummaryInfo *PSI = &AM.getResult<ProfileSummaryAnalysis>(M); + +  if (HotColdSplitting(PSI, GBFI, GTTI, &GetORE).run(M)) +    return PreservedAnalyses::none(); +  return PreservedAnalyses::all(); +} +  char HotColdSplittingLegacyPass::ID = 0;  INITIALIZE_PASS_BEGIN(HotColdSplittingLegacyPass, "hotcoldsplit",                        "Hot Cold Splitting", false, false)  | 

