diff options
| author | Chandler Carruth <chandlerc@gmail.com> | 2013-11-17 03:18:05 +0000 | 
|---|---|---|
| committer | Chandler Carruth <chandlerc@gmail.com> | 2013-11-17 03:18:05 +0000 | 
| commit | a8df47603af85c422a59a8b373ad7d76ab1691f1 (patch) | |
| tree | 64b54d89554e1c14a795b89e7968c1ade370ee31 /llvm/include | |
| parent | 7101fd0e562a21ccb5223ed62b9bc406c2c27517 (diff) | |
| download | bcm5719-llvm-a8df47603af85c422a59a8b373ad7d76ab1691f1.tar.gz bcm5719-llvm-a8df47603af85c422a59a8b373ad7d76ab1691f1.zip  | |
[PM] Completely remove support for explicit 'require' methods on the
AnalysisManager. All this method did was assert something and we have
a perfectly good way to trigger that assert from the query path.
llvm-svn: 194947
Diffstat (limited to 'llvm/include')
| -rw-r--r-- | llvm/include/llvm/IR/PassManager.h | 37 | 
1 files changed, 6 insertions, 31 deletions
diff --git a/llvm/include/llvm/IR/PassManager.h b/llvm/include/llvm/IR/PassManager.h index 08aac77f68a..833547a23ac 100644 --- a/llvm/include/llvm/IR/PassManager.h +++ b/llvm/include/llvm/IR/PassManager.h @@ -151,6 +151,9 @@ public:    /// constructed around.    template <typename PassT>    const typename PassT::Result &getResult(Module *M) { +    assert(ModuleAnalysisPasses.count(PassT::ID()) && +           "This analysis pass was not registered prior to being queried"); +      const AnalysisResultConcept<Module> &ResultConcept =          getResultImpl(PassT::ID(), M);      typedef AnalysisResultModel<Module, typename PassT::Result> ResultModelT; @@ -163,6 +166,9 @@ public:    /// re-run the analysis to produce a valid result.    template <typename PassT>    const typename PassT::Result &getResult(Function *F) { +    assert(FunctionAnalysisPasses.count(PassT::ID()) && +           "This analysis pass was not registered prior to being queried"); +      const AnalysisResultConcept<Function> &ResultConcept =          getResultImpl(PassT::ID(), F);      typedef AnalysisResultModel<Function, typename PassT::Result> ResultModelT; @@ -180,21 +186,6 @@ public:      registerAnalysisPassImpl<PassT>(llvm_move(Pass));    } -  /// \brief Require that a particular analysis pass is provided by the manager. -  /// -  /// This allows transform passes to assert ther requirements during -  /// construction and fail fast if the analysis manager doesn't provide the -  /// needed facilities. -  /// -  /// We force the analysis manager to have these passes explicitly registered -  /// first to ensure that there is exactly one place in the code responsible -  /// for adding an analysis pass to the manager as all transforms will share -  /// a single pass within the manager and each may not be the canonical place -  /// to initialize such a pass. -  template <typename PassT> void requireAnalysisPass() { -    requireAnalysisPassImpl<PassT>(); -  } -    /// \brief Invalidate a specific analysis pass for an IR module.    ///    /// Note that the analysis result can disregard invalidation. @@ -334,22 +325,6 @@ private:          new AnalysisPassModel<PassT>(llvm_move(Pass));    } -  /// \brief Module pass specific implementation of requirement declaration. -  template <typename PassT> -  typename enable_if<is_same<typename PassT::IRUnitT, Module> >::type -  requireAnalysisPassImpl() { -    assert(ModuleAnalysisPasses.count(PassT::ID()) && -           "This analysis pass was not registered prior to being required"); -  } - -  /// \brief Function pass specific implementation of requirement declaration. -  template <typename PassT> -  typename enable_if<is_same<typename PassT::IRUnitT, Function> >::type -  requireAnalysisPassImpl() { -    assert(FunctionAnalysisPasses.count(PassT::ID()) && -           "This analysis pass was not registered prior to being required"); -  } -    /// \brief Map type from module analysis pass ID to pass concept pointer.    typedef DenseMap<void *, polymorphic_ptr<AnalysisPassConcept<Module> > >  | 

