summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2014-02-05 21:41:42 +0000
committerChandler Carruth <chandlerc@gmail.com>2014-02-05 21:41:42 +0000
commit77b655c1c9b155441e34813223f172fa5a57891b (patch)
tree88b6c32da39fba9b5a09765aa336fd2233d00176 /include
parentf39297678b212ab5ee7885474762fc8c3f6c370f (diff)
downloadllvm-77b655c1c9b155441e34813223f172fa5a57891b.tar.gz
llvm-77b655c1c9b155441e34813223f172fa5a57891b.tar.bz2
llvm-77b655c1c9b155441e34813223f172fa5a57891b.tar.xz
[PM] Don't require analysis results to be const in the new pass manager.
I think this was just over-eagerness on my part. The analysis results need to often be non-const because they need to (in some cases at least) be updated by the transformation pass in order to remain correct. It also makes lazy analyses (a common case) needlessly annoying to write in order to make their entire state mutable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200881 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/IR/PassManager.h22
1 files changed, 11 insertions, 11 deletions
diff --git a/include/llvm/IR/PassManager.h b/include/llvm/IR/PassManager.h
index 09eb10b846..93d04344f8 100644
--- a/include/llvm/IR/PassManager.h
+++ b/include/llvm/IR/PassManager.h
@@ -481,15 +481,15 @@ public:
///
/// If there is not a valid cached result in the manager already, this will
/// re-run the analysis to produce a valid result.
- template <typename PassT> const typename PassT::Result &getResult(IRUnitT IR) {
+ template <typename PassT> typename PassT::Result &getResult(IRUnitT IR) {
assert(AnalysisPasses.count(PassT::ID()) &&
"This analysis pass was not registered prior to being queried");
- const ResultConceptT &ResultConcept =
+ ResultConceptT &ResultConcept =
derived_this()->getResultImpl(PassT::ID(), IR);
typedef detail::AnalysisResultModel<IRUnitT, PassT, typename PassT::Result>
ResultModelT;
- return static_cast<const ResultModelT &>(ResultConcept).Result;
+ return static_cast<ResultModelT &>(ResultConcept).Result;
}
/// \brief Get the cached result of an analysis pass for this module.
@@ -498,18 +498,18 @@ public:
///
/// \returns null if there is no cached result.
template <typename PassT>
- const typename PassT::Result *getCachedResult(IRUnitT IR) const {
+ typename PassT::Result *getCachedResult(IRUnitT IR) const {
assert(AnalysisPasses.count(PassT::ID()) &&
"This analysis pass was not registered prior to being queried");
- const ResultConceptT *ResultConcept =
+ ResultConceptT *ResultConcept =
derived_this()->getCachedResultImpl(PassT::ID(), IR);
if (!ResultConcept)
return 0;
typedef detail::AnalysisResultModel<IRUnitT, PassT, typename PassT::Result>
ResultModelT;
- return &static_cast<const ResultModelT *>(ResultConcept)->Result;
+ return &static_cast<ResultModelT *>(ResultConcept)->Result;
}
/// \brief Register an analysis pass with the manager.
@@ -582,10 +582,10 @@ public:
private:
/// \brief Get a module pass result, running the pass if necessary.
- const ResultConceptT &getResultImpl(void *PassID, Module *M);
+ ResultConceptT &getResultImpl(void *PassID, Module *M);
/// \brief Get a cached module pass result or return null.
- const ResultConceptT *getCachedResultImpl(void *PassID, Module *M) const;
+ ResultConceptT *getCachedResultImpl(void *PassID, Module *M) const;
/// \brief Invalidate a module pass result.
void invalidateImpl(void *PassID, Module *M);
@@ -627,10 +627,10 @@ public:
private:
/// \brief Get a function pass result, running the pass if necessary.
- const ResultConceptT &getResultImpl(void *PassID, Function *F);
+ ResultConceptT &getResultImpl(void *PassID, Function *F);
/// \brief Get a cached function pass result or return null.
- const ResultConceptT *getCachedResultImpl(void *PassID, Function *F) const;
+ ResultConceptT *getCachedResultImpl(void *PassID, Function *F) const;
/// \brief Invalidate a function pass result.
void invalidateImpl(void *PassID, Function *F);
@@ -711,7 +711,7 @@ public:
~Result();
/// \brief Accessor for the \c FunctionAnalysisManager.
- FunctionAnalysisManager &getManager() const { return FAM; }
+ FunctionAnalysisManager &getManager() { return FAM; }
/// \brief Handler for invalidation of the module.
///