#ifndef POLLY_SCOP_PASS_H
#define POLLY_SCOP_PASS_H
#include "polly/ScopInfo.h"
#include "llvm/ADT/PriorityWorklist.h"
#include "llvm/Analysis/RegionPass.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/PassManagerImpl.h"
namespace polly {
AllAnalysesOn;
AnalysisManager;
DominatorTreeAnalysis;
InnerAnalysisManagerProxy;
LoopAnalysis;
OuterAnalysisManagerProxy;
PassManager;
RegionInfoAnalysis;
ScalarEvolutionAnalysis;
SmallPriorityWorklist;
TargetIRAnalysis;
TargetTransformInfo;
class Scop;
class SPMUpdater;
struct ScopStandardAnalysisResults;
ScopAnalysisManager;
ScopAnalysisManagerFunctionProxy;
FunctionAnalysisManagerScopProxy;
}
namespace llvm {
Scop;
ScopAnalysisManager;
ScopAnalysisManagerFunctionProxy;
ScopInfo;
ScopStandardAnalysisResults;
SPMUpdater;
template <>
class InnerAnalysisManagerProxy<ScopAnalysisManager, Function>::Result { … };
RequireAnalysisPass<AnalysisT, Scop, ScopAnalysisManager, ScopStandardAnalysisResults &, SPMUpdater &>;
template <>
InnerAnalysisManagerProxy<ScopAnalysisManager, Function>::Result
InnerAnalysisManagerProxy<ScopAnalysisManager, Function>::run(
Function &F, FunctionAnalysisManager &FAM);
template <>
PreservedAnalyses
PassManager<Scop, ScopAnalysisManager, ScopStandardAnalysisResults &,
SPMUpdater &>::run(Scop &InitialS, ScopAnalysisManager &AM,
ScopStandardAnalysisResults &, SPMUpdater &);
extern template class PassManager<Scop, ScopAnalysisManager,
ScopStandardAnalysisResults &, SPMUpdater &>;
extern template class InnerAnalysisManagerProxy<ScopAnalysisManager, Function>;
extern template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Scop,
ScopStandardAnalysisResults &>;
}
namespace polly {
template <typename AnalysisManagerT, typename IRUnitT, typename... ExtraArgTs>
class OwningInnerAnalysisManagerProxy final
: public InnerAnalysisManagerProxy<AnalysisManagerT, IRUnitT> { … };
template <>
OwningInnerAnalysisManagerProxy<ScopAnalysisManager, Function>::Result
OwningInnerAnalysisManagerProxy<ScopAnalysisManager, Function>::run(
Function &F, FunctionAnalysisManager &FAM);
extern template class OwningInnerAnalysisManagerProxy<ScopAnalysisManager,
Function>;
OwningScopAnalysisManagerFunctionProxy;
ScopPassManager;
class ScopPass : public RegionPass { … };
struct ScopStandardAnalysisResults { … };
class SPMUpdater final { … };
template <typename ScopPassT>
struct FunctionToScopPassAdaptor final
: PassInfoMixin<FunctionToScopPassAdaptor<ScopPassT>> { … };
template <typename ScopPassT>
FunctionToScopPassAdaptor<ScopPassT>
createFunctionToScopPassAdaptor(ScopPassT Pass) { … }
}
#endif