diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp | 52 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Utils/AddDiscriminators.cpp | 6 | 
2 files changed, 28 insertions, 30 deletions
diff --git a/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp b/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp index 97c5f183dcb..e6933336947 100644 --- a/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp +++ b/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp @@ -196,31 +196,35 @@ PreservedAnalyses SimplifyCFGPass::run(Function &F,    return PreservedAnalyses::all();  } -CFGSimplifyPass::CFGSimplifyPass(int T, -            std::function<bool(const Function &)> Ftor) -    : FunctionPass(ID), PredicateFtor(Ftor) { -  BonusInstThreshold = (T == -1) ? UserBonusInstThreshold : unsigned(T); -  initializeCFGSimplifyPassPass(*PassRegistry::getPassRegistry()); -} - -bool CFGSimplifyPass::runOnFunction(Function &F) { -  if (PredicateFtor && !PredicateFtor(F)) -    return false; - -  if (skipFunction(F)) -    return false; - -  AssumptionCache *AC = -      &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F); -  const TargetTransformInfo &TTI = -      getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F); -  return simplifyFunctionCFG(F, TTI, AC, BonusInstThreshold); -} +namespace { +struct CFGSimplifyPass : public FunctionPass { +  static char ID; // Pass identification, replacement for typeid +  unsigned BonusInstThreshold; +  std::function<bool(const Function &)> PredicateFtor; + +  CFGSimplifyPass(int T = -1, +                  std::function<bool(const Function &)> Ftor = nullptr) +      : FunctionPass(ID), PredicateFtor(Ftor) { +    BonusInstThreshold = (T == -1) ? UserBonusInstThreshold : unsigned(T); +    initializeCFGSimplifyPassPass(*PassRegistry::getPassRegistry()); +  } +  bool runOnFunction(Function &F) override { +    if (skipFunction(F) || (PredicateFtor && !PredicateFtor(F))) +      return false; + +    AssumptionCache *AC = +        &getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F); +    const TargetTransformInfo &TTI = +        getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F); +    return simplifyFunctionCFG(F, TTI, AC, BonusInstThreshold); +  } -void CFGSimplifyPass::getAnalysisUsage(AnalysisUsage &AU) const { -  AU.addRequired<AssumptionCacheTracker>(); -  AU.addRequired<TargetTransformInfoWrapperPass>(); -  AU.addPreserved<GlobalsAAWrapperPass>(); +  void getAnalysisUsage(AnalysisUsage &AU) const override { +    AU.addRequired<AssumptionCacheTracker>(); +    AU.addRequired<TargetTransformInfoWrapperPass>(); +    AU.addPreserved<GlobalsAAWrapperPass>(); +  } +};  }  char CFGSimplifyPass::ID = 0; diff --git a/llvm/lib/Transforms/Utils/AddDiscriminators.cpp b/llvm/lib/Transforms/Utils/AddDiscriminators.cpp index 6c4db99efe3..2a6b6eb1b0b 100644 --- a/llvm/lib/Transforms/Utils/AddDiscriminators.cpp +++ b/llvm/lib/Transforms/Utils/AddDiscriminators.cpp @@ -67,7 +67,6 @@  #include "llvm/Support/Debug.h"  #include "llvm/Support/raw_ostream.h"  #include "llvm/Transforms/Scalar.h" -#include "llvm/Transforms/Scalar/SimplifyCFG.h"  using namespace llvm; @@ -80,10 +79,6 @@ struct AddDiscriminators : public FunctionPass {      initializeAddDiscriminatorsPass(*PassRegistry::getPassRegistry());    } -  void getAnalysisUsage(AnalysisUsage &AU) const override { -    AU.addRequired<CFGSimplifyPass>(); -  } -    bool runOnFunction(Function &F) override;  };  } // end anonymous namespace @@ -91,7 +86,6 @@ struct AddDiscriminators : public FunctionPass {  char AddDiscriminators::ID = 0;  INITIALIZE_PASS_BEGIN(AddDiscriminators, "add-discriminators",                        "Add DWARF path discriminators", false, false) -INITIALIZE_PASS_DEPENDENCY(CFGSimplifyPass)  INITIALIZE_PASS_END(AddDiscriminators, "add-discriminators",                      "Add DWARF path discriminators", false, false)  | 

